mysqli预处理的学习主要是指mysqli_stmt对象的方法的使用,下面我们通过一个例子来分析各个方法的使用方法和作用:
代码如下:
/* 连接mysql */
$mysqli = new Mysqli(DB_HOST,DB_USER,DB_PWD,DB_NAME);
if($mysqli->connect_errno){
die('Connect Error : '.$mysqli->connect_error);
}
/* 预处理sql */
$sql = "SELECT * FROM user WHERE id>=?";
/* 获取mysqli_statement对象*/
$stmt = $mysqli->prepare($sql);
/* 绑定参数 */
$stmt->bind_param('i',$id);
/* 定义参数 */
$id = 6;
/* 执行上面的sql语句 */
if($stmt->execute()) {
/*
默认select的结果集保存在mysql服务器内存中,并且通过fetch
一条一条的返回给php,如果想在php中对该结果集进行操作,可以
使用下面的方法,该函数内部对mysqli_statement对象的部分属
性重置为真实的结果,例如num_rows,affected_rows等属性
*/
$stmt->store_result();
echo '共有'.$stmt->num_rows.'行<br >';//输出结果数
echo '共影响'.$stmt->affected_rows.'行<br >';//输出影响行数
/* 将结果集中的值付给对应的变量 */
$stmt->bind_result($id,$name,$password);
/* 移动结果集的内部指针到最后 */
$stmt->data_seek($stmt->num_rows-1);
/* 使用fetch一个个获取结果集中的内容 */
while($stmt->fetch()) {
echo '用户编号:',$id,'<br />';
echo '用户名:',$name,'<br />';
echo '用户密码:',$password,'<br />';
echo '<hr />';
}
/* 释放由store_result产生的结果集 */
$stmt->free_result();
/* 关闭mysqli_statement对象 */
$stmt->close();
}
/* close connection */
$mysqli->close();
分析:在上面的例子中几乎涵盖了预处理所有常用的方法,希望大家多思考预处理机制的原理,这样就能知道在适当的时候使用合适的方法了。
好啦,今天就说到这啦!希望大家阅读愉快,还有,请大家不要吝啬自己的意见,记得给我评论哦,一起进步,么么哒。