Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用prepared语句返回mysql表中的所有数据_Php_Mysql_Mysqli - Fatal编程技术网

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()
来绑定输出变量。