MySQLi OOP 绑定参数错误
Posted
技术标签:
【中文标题】MySQLi OOP 绑定参数错误【英文标题】:MySQLi OOP Bind Parameters Error 【发布时间】:2016-08-31 21:08:51 【问题描述】:我从 mysqli 开始,我从一个简单的选择开始,它可以工作:
$sql = "SELECT nombres, apellidos FROM users WHERE user = 'juan'";
$result = $con->query($sql);
while($row = $result->fetch_object())
print $row->nombres . '<br />';
print $row->apellidos . '<br />';
但是当我尝试使用准备好的语句时没有显示结果......我做错了什么?
$user = 'juan';
$sql = "SELECT nombres, apellidos FROM users WHERE user = ?";
$result = $con->prepare($sql);
$result->bind_param('s', $user);
$result->execute();
while($row = $result->fetch_object())
print $row->nombres . '<br />';
print $row->apellidos . '<br />';
【问题讨论】:
【参考方案1】:在准备好的语句中使用 fetch 有点不同。还有另一个用于 mysqli 准备好的语句的 fethcing API,您需要使用 ->bind_result()
和 stmt_fetch()
才能使其工作。
$result->bind_param('s', $user);
$result->execute();
$result->bind_result($nombres, $apellidos);
while($result->fetch())
print $nombres . '<br />';
print $apellidos . '<br />';
【讨论】:
【参考方案2】:执行将返回一个mysqli_statement
对象。如果您想像处理mysqli_result
对象一样处理查询结果,您必须运行$stmt->get_result()
将其转换为mysqli_result
对象,然后您可以使用while 循环作为mysqli_result
对象处理正如你所做的那样
$user = 'juan';
$sql = "SELECT nombres, apellidos FROM users WHERE user = ?";
$stmt= $con->prepare($sql);
$stmt->bind_param('s', $user);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_object())
print $row->nombres . '<br />';
print $row->apellidos . '<br />';
不幸的是,此功能/方法仅在您安装了本机驱动程序
mysqlnd
时可用。
【讨论】:
->get_result()
另一个不错的选择,如果此方法在您的环境中可用 @PatricioCarvajalH
@PatricioCarvajalH.Ah 是的,感谢您提醒我这并不总是可用,为此添加了注释
@RiggsFolly 谢谢。找到了那些有趣的链接:***.com/questions/18753262/…***.com/questions/8321096/…When to use bind_result vs get_result in mysql --> arian.io/when-to-use-bind_result-vs-get_result-in-mysql以上是关于MySQLi OOP 绑定参数错误的主要内容,如果未能解决你的问题,请参考以下文章
mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?
mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?
mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?
mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?
mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?