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,您需要使用 -&gt;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-&gt;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 时可用。

【讨论】:

-&gt;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错误并修复它?