mysqli用while循环准备语句

时间:2015-03-23 15:26:17

标签: 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` 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_fetch_array() expects parameter 1 to be mysqli_result, null given,并且使用$result

上的$statementfetch_array没有任何区别

2 个答案:

答案 0 :(得分:1)

对于遇到此问题并发现所接受的解决方案不起作用的任何人(它对我来说都没有)。

然后试试这个:

app.controller("loginCtrl", function(**$**scope){

})

这使用get_result() function,它用于从预准备语句中获取结果。

这是在while循环之外初始化并分配给一个新变量,在本例中为$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; } 然后$result被分配给$result->fetch_assoc(),并且可以在循环内访问。从数组中访问每列作为键,以便$row将从该列下的每一行返回内容

答案 1 :(得分:-1)

替换这些行:

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

用这些:

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