MySQLi OOP绑定参数错误

时间:2016-05-05 22:38:44

标签: php mysql oop mysqli bind

我从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 />';
}

2 个答案:

答案 0 :(得分:1)

在预准备语句中使用fetch有点不同。还有另一个针对mysqli预处理语句的beethcing 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 />';
}

答案 1 :(得分:1)

执行将返回mysqli_statement个对象。如果要处理查询结果,就像它们是mysqli_result对象一样,您必须运行$stmt->get_result()将其转换为mysqli_result对象,然后您可以将其作为{{{}进行处理1}}具有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 />'; } ,此函数/方法才可用。