Прежде всего, вы изучаете переменную $sql
, которая является просто непустой строкой PHP. Сравнение с 0
никогда не сработает.
Но, предполагая, что вы вместо этого имели в виду:
$sql = "SELECT Available_Copies from books WHERE id = '$bid'";
$query = $conn->query($sql);
if($query == 0)
// ^^^^^^
& hellip; тогда это тоже не правильно. query()
возвращает объект результата . Он не возвращает значение столбца, полученного по вашему запросу. Как правило, ваш код PHP не знает о вашем коде SQL; это отдельные домены. Объект результата - это магический клей, который соединяет два домена вместе, но вы должны использовать его, как описано в документации, чтобы получить ожидаемые результаты.
См. Руководство по , как использовать объект результата . fetch_row()
выглядит хорошо для вас.
Кроме того, я бы рекомендовал называть его $result
, а не $query
, потому что это результат, а не запрос.
Однако! Вы должны рассмотреть возможность объединения ваших операций в одну, потому что в настоящее время SELECT
совершенно не требуется:
UPDATE books SET status = 1 WHERE id = '$bid' AND Available_Copies = 0
Это позволяет избежать условий гонки и лишних накладных расходов, а также необходимости проверять значение столбца в PHP на всех !
Кроме того, параметризует ваши операторы SQL до для защиты вашей системы от несчастных случаев и террористов . Не делай так, как я показал выше. Не вставляйте $bid
в строку таким образом. Если ваш учебный материал (книга) не говорит об этом, приобретите другой учебный материал.