Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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 mysqli使用while循环准备语句_Php_Mysql_Mysqli - Fatal编程技术网

Php mysqli使用while循环准备语句

Php mysqli使用while循环准备语句,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试使用mysqli进行一个非常简单的查询。它快把我逼疯了 我只希望$data是sql查询中的一个值数组 这是我的密码 $req = $app->request(); $hashtag = $req->get('hashtag'); require_once 'Slim/lib/database.php'; $db = connect_db(); $statement = $db->prepare("SELECT `content` FROM `posts` WHE

我正在尝试使用mysqli进行一个非常简单的查询。它快把我逼疯了

我只希望
$data
是sql查询中的一个值数组

这是我的密码

$req = $app->request();
$hashtag = $req->get('hashtag');

require_once 'Slim/lib/database.php';

$db = connect_db();

$statement = $db->prepare("SELECT `content` FROM `posts` WHERE `content` LIKE ?");
$newhashtag = '%#' . $hashtag . '%';
$statement -> bind_param("s", $newhashtag);

$statement -> execute();

$statement -> bind_result($result);

while ( $row = mysqli_fetch_array($statement) ) {
    $data[] = $row;
}

print_r($data);

$statement -> close();
我刚刚得到一个错误
mysqli\u fetch\u array()期望参数1是mysqli\u result,给定为null
,在
fetch\u array上使用
$result
$statement
替换以下行:

while ( $row = mysqli_fetch_array($statement) ) {
   $data[] = $row;
}
有了这些:

while ($row = $statement->fetch()) {
   $data[] = $row;
}

对于任何遇到这个问题并发现公认的解决方案不起作用的人(对我来说不起作用)

然后试试这个:

$statement = $db->prepare("SELECT `content` FROM `posts` WHERE `content` LIKE ?");
$newhashtag = "%#$hashtag%";
$statement->bind_param("s", $newhashtag);
$statement->execute();
$result = $statement->get_result();

while ($row = $result->fetch_assoc())
{
    $data[] = $row;
}
这将使用,用于从准备好的语句中获取结果

这在while循环外初始化并分配给一个新变量,在本例中为
$result


然后将
$result->fetch_assoc()
分配给
$row
,并可在循环中访问。从数组中以键的形式访问每一列,这样
$row[“content”]
将返回该列下每一行的内容

当您已经有
$statement->bind\u result($result)
您的代码返回此数组
数组([0]=>1[1]=>1)时,为什么要使用while循环
-看起来仍然错误,请注释掉
$语句->绑定结果($result)零件,然后尝试更新的while循环。注意:在您的评论之后,我更新了while循环。