我有以下问题 - 我想通过单击相应类别来显示特定类别的产品。我通过循环显示产品列表,发送参数,但它给出错误“mysqli_fetch_array() 期望参数 1 为 mysqli_result,第 25 行给出的布尔值”,尽管没有条件,循环可以正常工作:它们已经建议关于WHERE,但我不知道在哪里插入它,如果将它插入到请求中,那么什么也不会显示。 UPD:当尝试通过 pre 和 print_r 查看 GET 和 respItem 数组时,它们为空。 UPD:使用极端的答案,我能够捕获错误的详细文本:
未捕获的 mysqli_sql_exception:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'AND WHERE Product_ID= 1' 附近使用的正确语法
我不明白,我放弃了,我想好吧,我会用 PDO 重写它,以免受苦,但是不行 - 我安装了操作系统面板,将路径输入到 VS Code 中,然后我得到了错误:“ php_network_getaddresses: getaddrinfo 失败。”当然,我没有更改任何数据,它们与 mysqli 中的变量相同。 UPD:通过添加环境变量的路径来修复它。现在 PDO 本身会产生错误:
致命错误:未捕获的 PDOException:SQLSTATE[HY000] [1049] 未知数据库
<?php
include ./header.php';
?>
<?php
$queryItem = 'SELECT * FROM ProductCustomer';
if(isset($_GET['item'])){
$queryItem .= " AND Product_ID=$_GET[item]";
}
$respItem = mysqli_query($connDB, $queryItem);
?>
while($outputItem = mysqli_fetch_array($respItem)){
print("<div class='filterItem posPic'>
<img src='/img/$outputItem[ProductImg]' class='filterPic'>
<p class='posPic'>
<br>$outputItem[Name]
<br>Цена $outputItem[Price] ₽
</p>
</div>");
};
?>
问题解决了。错误出在数据库中的列名称中。正如他们向我解释的那样,数据库中有一个 Product_[space]ID,但直接查询执行正确,因为 SQL 本身删除了多余的空格。而且当从外部请求时,里面没有空格,但是数据库里有空格,没有人自动做任何事情,我也没有看到。就这样。结论——仔细看看,还是使用不带下划线的命名方式