【发布时间】:2017-11-01 21:16:10
【问题描述】:
我正在尝试使用 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 我会得到表中的所有结果(包括 search = 'john' 的项目)。此外,如果我使用查询 SELECT * FROM phptest WHERE search = 'john' 我会得到一条记录,其中 search = 'john'
但是一旦我把它变成准备好的语句,我得到零错误但零记录。我确实收到警告:
mysqli_fetch_array() 期望参数 1 为 mysqli_result,给定布尔值
这让我觉得我的 bind_param 或 execute() 返回 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 defined 和php bind_param is not working 中都没有发现错误。
【问题讨论】:
-
我现在很困惑,因为您有面向对象的语句设置,然后您对 mysqli_fetch_array 使用过程样式...
标签: php prepared-statement bindparam