Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:继续努力
-大纲:
-具体内容:
/**
* MySQLI操作思路及增删改查
* 其中$mysqli、$result、$stmt变量分别代表:
* mysqli类、mysqli_result类、mysqli_stmt对象
*/
/*————————————————————————————————*/
#1:连接数据库及各种设置(略)
$mysqli=new mysqli('localhost','root','root','dbname');
#2:执行SQL查询:
#2.1:准备sql语句
#2.1.1:SQL语句
//增
$sql='INSERT `users` SET `name`=? ,`email`=?;';
//删
$sql='DELETE FROM `users` WHERE `id`=?;';
//改
$sql='UPDATE `users` SET `name`=?,`email`=? WHERE `id`=?;';
//查:
$sql='SELECT `name`,`email` FROM `users` WHERE `id`=? LIMIT n offset p ORDER BY `name` ASC;';
#2.1.2:处理SQL语句
/**
*情况一:预处理
*适用:常用,增、删、改、查
*/
//a.创建mysqli_stmt对象
$stmt=$mysqli->stmt_init();
//b.预处理sql语句
$stmt->prepare($sql);
//c.绑定sql语句中的参数:
/*语法:mysqli_stmt::bind_param( string $types, mixed &$var1[, mixed &$...] ) : bool
$types:i(integer)、d(double)、s(string)、b(blob)
*/
$user=['admin','admin@php.cn',5];
list($name,$email,$id)=$user;
$stmt->bind_param('ssi',$name,$email,$id);
//d.执行
/*方式一:
语法:mysqli_stmt::execute( void ) : bool*/
$stmt->excecute();
/*方式二:执行sql并获取结果集对象
语法:mysqli_stmt::get_result( void) : mysqli_result
*/
$result=$stmt->get_result();
/**
*情况二:直接处理
*适用:少用
*/
//直接执行sql并获取结果集对象
/*语法:mysqli::query( string $query[, int $resultmode = MYSQLI_STORE_RESULT] ) : mixed.*/
$result=$mysqli->query($sql);
#3:处理SQL执行结果
#3.1:`增`、`删`、`改`的处理
//查看受影响的记录
/*常用的属性有:
$stmt->affected_rows;//受影响的记录数
$stmt->insert_id;//添加成功的主键,用于insert操作
$stmt->error;//错误信息
*/
if($stmt->affected_rows):
echo '成功';
else:
echo '失败'.$stmt->error;
endif;
#3.2:`查`的处理
#3.2.1:方法一,使用mysqli_stmt对象
//a.绑定结果集
/*结果集中字段/列,绑定到指定的变量上
语法:mysqli_stmt::bind_result( mixed &$var1[, mixed &$...] ) : bool
*/
$stmt->bind_result($name,$email);
//b.从结果集中获取记录
/*方法:获取1条当前记录,并将指针移动到下一条记录->循环.
语法:mysqli_stmt::fetch( void) : bool
*/
while ($stmt->fetch()):
echo "$name--->$email <br>";
endwhile;
//c.释放结果集对象:
$stmt->free_result()
#3.2.2:方法二,使用mysqli_result对象(常用)
//a.获取结果集对象
/*方式一:预处理方式*/
$result=$stmt->get_result();//获取结果集
/*方式二:直接获取方式*/
$result=$mysqli->query($sql);
//b.从结果集对象中获取记录
/*方式一:获取1条当前记录并将指针移到下一条记录->循环.
其中,分3种情况
*/
//情况一:返回一维数组:索引+关联
$result->fetch_array();
//情况二:返回一维数组:索引
$result->fetch_row();
//情况三:返回一维数组:关联(常用)
$result->fetch_assoc();
//循环方式:while
while ($result->fetch_assoc()):
echo "{$user['name']}==>{$user['email']} <br>";
endwhile;
/*方式二:一次性获取所有数据->循环.*/
//第一步:数据表指针复位
$result->data_seek(0);
//第二步:获取所有记录
/*情况一:返回二维数组:索引=>索引*/
$users=$result->fetch_all();
/*情况二:返回二维数组:索引=>关联*/
$users=$result->fetch_all(MYSQLI_ASSOC);
//循环方式:foreach
foreach($users as $user){
echo "{$user['name']}==>{$user['email']} <br>";
}
//c.释放结果对象
$result->free_result();
//#4:结束操作
//方式一:
$stmt->close();
//方式二:
$mysqli->close();
注:前期各种原因未能紧跟学习课程,现在才勉强赶上