Php 使用prepared语句返回mysql表中的所有数据
我想返回报价表上的所有信息Php 使用prepared语句返回mysql表中的所有数据,php,mysql,mysqli,Php,Mysql,Mysqli,我想返回报价表上的所有信息 $sth = $mysqli->prepare('SELECT * from offers'); $sth->execute(); $resultex = $sth->fetch(); $sth->close(); return json_encode($resultex); 但这不起作用。我如何在mysqli中使用准备好的语句 我不想在这种情况下使用PDO。您可能需要将结果绑定到变量。请参阅文档。您需要执行以下操作: /* bind res
$sth = $mysqli->prepare('SELECT * from offers');
$sth->execute();
$resultex = $sth->fetch();
$sth->close();
return json_encode($resultex);
但这不起作用。我如何在mysqli
中使用准备好的语句
我不想在这种情况下使用PDO。您可能需要将结果绑定到变量。请参阅文档。您需要执行以下操作:
/* bind result variables */
$sth->bind_result($var1, $var2, $var3);
while ($sth->fetch()) {
$intermediateVariable[] = array($var1, $var2, $var3);
}
fetch
和friends返回结果集的一行。另外,fetch
使用绑定变量,因此需要不同的方案来获得结果get\u result
和fetch\u array
很可能对您有效
您需要在行上循环,如下所示:
$sth->execute();
while ($row = $sth->fetch_array(MYSQLI_NUM))
{
foreach ($row as $r)
{
/* do your json encoding for the present row */
}
}
$sth->close();
让我们澄清一下,有几件事: 在这种情况下,您不需要使用预先准备好的语句! 当您有参数时,准备好的语句非常好。黄金法则:如果查询中有变量(请注意,即使它们是常量),则需要准备好语句。如果没有,则不需要事先准备好的语句 你想要所有的信息,但你只得到一次
mysqli\u语句::fetch()
将只获取一行。如果需要更多,则需要使用while
循环
您正在return
ing,但看起来您不在函数中
是吗<代码>返回不输出任何内容。因此,在函数/方法范围之外,您不会从该上下文中的
return
中得到任何东西。定义:这不起作用
,我看到您使用的是return
,而不是在函数内部。$resultex
是一个布尔返回值,而不是数组mysqli_语句::fetch
的工作方式与mysqli_fetch.*()
的工作方式不同。首先需要调用$sth->bind_result()
来绑定输出变量。