PHP bind_param 没有绑定参数

PHP bind_param not binding parameter

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

$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 我得到 table 中的所有结果(包括项目其中搜索 = 'john')。此外,如果我使用查询 SELECT * FROM phptest WHERE search = 'john' 我会得到一条记录,其中 search = 'john'

但是一旦我把它变成准备好的语句,我得到零错误但零记录。我 收到警告:

mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given

这让我觉得我的 bind_paramexecute() 返回了 FALSE,但当我检查时,它似乎没有返回 false。

我通过教程 https://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/ 开始了我的冒险之旅,我认为我完全理解了它,但是 运行 在尝试制作自己的 PHP [=47= 时犯了错误].

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

尽管它已关闭 "off-topic," 我已经查看 PHP bind_param not working 并没有发现任何适用于我的情况。

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

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

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

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

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