PHP bind_param没有绑定参数

时间:2017-11-01 21:16:11

标签: php prepared-statement bindparam

我正在尝试使用PHP中的预准备语句在表中搜索特定项目。我没有错误,但也没有记录。这是我的代码:

$items = [];
$search = "john";
if ($stmt = $this->con->prepare("SELECT * FROM phptest WHERE search = ?")) { //'john'";
    $stmt->bind_param("s",$search);
    $stmt->execute();
    while ($row = mysqli_fetch_array($stmt)) {
        $item = [];
        $item['id'] = $row['id'];
        $item['first'] = $row['search'];
        $item['last'] = $row['data'];
        array_push($items, $item);
    }
}
return $items;

现在,当我使用准备好的陈述时,只需SELECT * FROM phptest我就可以获得表格中的所有结果(包括搜索项目='约翰&#39)。此外,如果我使用查询SELECT * FROM phptest WHERE search = 'john',我会得到一条记录,其中search =' john'

但是一旦我把它变成准备好的声明,我就会得到零错误但是没有记录。我得到警告:

  

mysqli_fetch_array()期望参数1为mysqli_result,boolean given

这使我认为我的bind_paramexecute()返回FALSE,但是当我检查时,它似乎没有返回false。

我开始冒险完成教程https://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/,我认为我完全理解这个教程,但在尝试创建自己的PHP API时遇到了我的错误。

然后我转到手册http://php.net/manual/fr/mysqli.prepare.php,但仍然找不到我的错误。

虽然它已被关闭为"偏离主题,"我查看了PHP bind_param not working,发现没有任何适用于我的情况。

同样,我没有在PHP bind_param not definedphp bind_param is not working中找到错误。

1 个答案:

答案 0 :(得分:3)

你非常接近。期望mysqli_fetch_array()传递一个结果对象,而不是语句对象本身:

$stmt = $conn->prepare(...);
$stmt->bind_param(...);
$stmt->execute();
$result = $stmt->get_result();
while ($row = mysqli_fetch_array($result)) {

或者,以完全面向对象的方式:

while ($row = $result->fetch_array()) {