Почему не выводятся товары определенной категории?
У меня проблема следующая — хочу отображать товары определенной категории по клику на соответствующую категорию. Отображаю список товаров через цикл, параметр отправляю, но выдает ошибку «mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in on line 25», хотя без условия цикл отрабатывает верно: Подсказывали уже про WHERE, но я не знаю куда его вставить, если вставить к запросу — то перестает выводиться вообще что-либо. UPD: Массив GET и respItem пустые при попытке посмотреть их через pre и print_r. UPD: С помощью крайнего ответа смог словить подробный текст ошибки:
Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND WHERE Product_ID= 1'
Не понял, плюнул, думаю ладно, перепишу на PDO, чтобы не страдать, но нет — установил OS Panel, закинул пути в VS Code, и тут получил ошибку: «php_network_getaddresses: getaddrinfo failed». Естественно никаких данных я не менял, они такие же как и в mysqli, в переменных. UPD: пофиксил, закинув в переменные среды путь. Теперь ошибку выдает уже сам PDO:
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1049] Unknown database
<?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>");
};
?>
Ответы (1 шт):
Проблема решена. Ошибка была в имени столбца в базе данных. Как мне объяснили, в базе данных было Product_[пробел]ID, но при этом прямой запрос выполнялся корректно, потому что SQL убрал сам лишние пробелы. А при запросе извне, когда в нем было без пробела, а в БД с пробелом, никто автоматически ничего не делал, а я не видел. Вот так вот. Вывод — смотрите внимательнее, или используйте способы именования без подчеркиваний