SELECT语句和其他的SQL查询命令不同,它需要处理查询结果。SQL语句的执行也需要使用mysqli_stmt对象中的execute()方法,但与mysqli对象中的query()方法不同,execute()方法的返回值并不是一个mysqli_result对象。mysqli_stmt对象提供了一种更为精巧的办法来处理SELECT语句查询结果:在使用execute()方法执行SQL语句完成查询之后,使用mysqli_stmt对象中的bind_result()方法,把查询结果的各个数据列绑定到一些PHP变量上;然后使用mysqli_stmt对象中的fetch()方法把下一条结果记录读取到这些变量里。如果成功地读入下一条记录fetch()方法返回TRUE,否则返回FALSE,或者已经读完所有的结果记录返回FALSE。
默认情况下,SELECT查询结果将留在MySQL服务器上,等待fetch()方法把记录逐条取回到PHP程序中,赋给使用bind_result()方法绑定的PHP变量上。如果需要对所有记录而不只是一小部分进行处理,可以调用mysqli_stmt对象中的store_result()方法,把所有结果一次全部传回到PHP程序中。这样做不仅更有效率,而且能减轻服务器的负担。store_result()方法是可选的,除了读取数据不改变任何东西。以联系人信息表contactinfo为例,使用预处理语句处理SELECT查询结果的代码如下所示:
if (mysqli_connect_errno())
{//检查连接错误
printf(“连接失败: %s
”, mysqli_connect_error());exit();
}$query = "SELECT `name`, `address`, `phone` FROM `contactinfo` LIMIT 0,3"; //声明SELECT语句
if ($stmt = $mysqli->prepare($query))
{//处理打算执行的SQL命令
$stmt->execute();//执行SQL语句

本文介绍了如何使用MySQL预处理语句和mysqli_stmt类处理SELECT查询结果,包括使用execute(), bind_result()和fetch()方法。通过示例代码展示了如何存储查询结果,输出记录个数,并解释了store_result()方法的作用。此外,还提到了预处理语句在减少数据传输和提高效率方面的优势。"
103257832,9085726,Node.js连接本地数据库实战,"['后端开发', '数据库', 'node.js', 'API', '数据库连接']
最低0.47元/天 解锁文章
1812

被折叠的 条评论
为什么被折叠?



