时间:2021-07-01 10:21:17 帮助过:23人阅读
面向对象的预处理和面向过程的预处理一样,只是转换一种表现形式而已,可以参照一下面向过程的方法http://www.cnblogs.com/-beyond/p/7577155.html
面向对象的预处理涉及以下几个函数:
mysqli_stmt mysqli::prepare ( string $query ) bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] ) bool mysqli_stmt::execute ( void ) mysqli_result mysqli_stmt::get_result ( void ) void mysqli_stmt::free_result ( void ) bool mysqli_stmt::close ( void ) void mysqli_result::free_result ( void )
具体用法如下
<?php
$db=new mysqli("localhost","root","root","test");
//预处理(增删改)
$sql="delete from aaa where uid = ?;";
$stmt=$db->prepare($sql);
$uid=4;
$stmt->bind_param(‘i‘,$uid);
// $stmt->bind_param(‘i‘,4);wrong
$stmt->execute();
$stmt->free_result();
$stmt->close();
//预处理(查)
$sql="select * from aaa where uid >?;";
$stmt=$db->prepare($sql);
$uid=1;
$stmt->bind_param("i",$uid);
if($stmt->execute()){
echo "there are ".$stmt->num_rows." rows\n";
echo "there are ".$stmt->field_count." fields\n";
$result=$stmt->get_result();
while(list($id,$name)=$result->fetch_array()){
echo $id."=>".$name."\n";
}
$stmt->free_result();
$result->free_result();
} else {
echo "failed to execute\n";
}
$stmt->close();
//关闭数据库
$db->close();
?>
其中关于参数绑定,还有读取结果集的问题,请查看前两篇博客
MySQLi面向对象实践---预处理
标签:roo where type 关闭数据库 ... blog 方法 failed 关闭