我有一个函数,它接受SQL查询和参数/参数数组。此函数在UPDATE
语句上正常工作,但在SELECT
语句上没有。函数mysqli_fetch_array
没有返回任何内容,我无法弄清楚原因。我得到的错误信息是;
" mysqli_fetch_array()期望参数1为mysqli_result,boolean given"
我使用的是PHP 5.5版。
查询如下:
<?php
$txtSearch = isset($_POST["txtSearch"]) ? $_POST["txtSearch"] : "";
$result_search = null;
$query = "";
if(!empty($txtSearch))
{
if($page == "adverts")
{
$query = "
SELECT
A.ID,
A.title,
A.productname,
A.price,
A.description,
A.productlocation,
(SELECT I.name FROM image I WHERE I.advertID = A.ID LIMIT 1) AS name
FROM advert A
WHERE A.title LIKE ?";
}
$result_search = queryDB($query, array("s", "%".$txtSearch."%"));
}
while($row = mysqli_fetch_array($result_search))
{
echo
"<div class='post_container'>
<div class='title_banner'>".$row["title"]."</div>
<div>£".$row["price"]."</div>
</div>";
}
?>
答案 0 :(得分:0)
在将查询结果作为参数传递之前,请尝试检查查询结果。如果它返回false,则查询有问题。
if($result_search === FALSE) {
die(mysql_error()); // TODO: better error handling
}
我会改变你的查询:
SELECT
A.ID, A.title, A.productname,
A.price, A.description,
A.productlocation,
I.name
FROM
advert A
INNER JOIN
image I ON I.advertID = A.ID
WHERE
A.title LIKE ?"
答案 1 :(得分:0)
您可以返回$stmt->get_result()
,这将为您提供可以迭代的结果。
您的错误告诉您正在返回布尔值,而不是mysqli_result。 mysqli_stmt::fetch()
上的文档确认它返回一个布尔值。