MySQLi OOP 绑定参数错误
MySQLi OOP Bind Parameters Error
我从 MySQLi 开始,我从一个简单的 select 开始并且它有效:
$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 />';
}
在准备好的语句中使用 fetch 有点不同。还有另一个用于 mysqli 准备语句的提取 API,你需要使用 ->bind_result()
and stmt_fetch()
才能工作。
$result->bind_param('s', $user);
$result->execute();
$result->bind_result($nombres, $apellidos);
while($result->fetch()){
print $nombres . '<br />';
print $apellidos . '<br />';
}
执行将 return 一个 mysqli_statement
对象。如果您想像处理查询结果一样处理 mysqli_result
对象,则必须 运行 a $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 />';
}
Unfortunately this function/method is only available if you have the Native Driver mysqlnd
installed.
我从 MySQLi 开始,我从一个简单的 select 开始并且它有效:
$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 />';
}
在准备好的语句中使用 fetch 有点不同。还有另一个用于 mysqli 准备语句的提取 API,你需要使用 ->bind_result()
and stmt_fetch()
才能工作。
$result->bind_param('s', $user);
$result->execute();
$result->bind_result($nombres, $apellidos);
while($result->fetch()){
print $nombres . '<br />';
print $apellidos . '<br />';
}
执行将 return 一个 mysqli_statement
对象。如果您想像处理查询结果一样处理 mysqli_result
对象,则必须 运行 a $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 />';
}
Unfortunately this function/method is only available if you have the Native Driver
mysqlnd
installed.