У меня проблемы с обработкой информации из базы данных MySQL, у меня есть этот код:
$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL";
$res = $conn->query($sql);
if ($res === TRUE) {
echo "DATA Obtained";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
Но единственное, что я получаю, это ошибка:
Ошибка: ВЫБРАТЬ * ИЗ ОБОЙОК, ГДЕ id_uzivatela = ‘******’ И id_zvierata НЕДЕЙСТВИТЕЛЕН
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать рядом с ‘is null AND id_uzivatela =’ 20170 » в строке 1
В вашем запросе нет проблем … Вы видите ошибку другого запроса.
Из документации возврат $ conn-> query не должен быть строго равен TRUE
Возвращает FALSE при ошибке. Для успешного выбора, шоу, описания или
EXPLAIN-запросы mysqli_query () вернет объект mysqli_result.
Если вы хотите проверить, сработал ли ваш запрос, не проверяйте истинное значение, лучше тестируйте не ложное …
$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL";
$res = $conn->query($sql);
if ($res != FALSE) {
echo "DATA Obtained";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
РЕДАКТИРОВАТЬ:
Я полностью забыл отметить, что, поскольку вы видите ошибку, связанную с другим запросом, вы должны исправить этот запрос! Когда я писал подобные запросы, у меня была одна привычка — писать так:
$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL";
$res = $conn->query($sql) or throw new Exception("Error: " . $sql . "<br>" . $conn->error);
Это означает, что make $ res = для значения запроса $ conn->, если оно не равно false. Если оно ложно, выведите исключение с соответствующей информацией.
Если вы сделаете это, вам не нужно будет проверять, хорош ли $ res или нет. Это также очень поможет вам найти, где происходят ошибки.
Ошибка не в запросе. По крайней мере, не в запросе, размещенном в вопросе.
Ошибка в коде PHP.
SELECT
запрос никогда не возвращается TRUE
, Он возвращает объект, когда это удается. Либо mysqli_result
или PDOStatement
, в зависимости от того, какую библиотеку MySQL вы используете.
Ваш запрос успешно выполнен и $res
это объект. Это не TRUE
, тест $res === TRUE
не удается, и код ошибочно запускает else
ветка. Затем он сообщает правильный запрос, который он только что успешно выполнил, и сообщение об ошибке последнего неудачного запроса. Это объясняет, почему фрагмент запроса, указанный сервером в сообщении об ошибке, не соответствует выполненному вами запросу.
Правильный способ проверить результат вашего запроса: $res != FALSE
, Неважно, если вы используете ==
или же ===
, $res
это либо объект (не равно FALSE
как бы это ни сравнивалось) или FALSE
, Вы также можете просто использовать $res
, Это то же самое:
$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL";
$res = $conn->query($sql);
if ($res) {
echo "DATA Obtained";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
В зависимости от используемой вами библиотеки MySQL, читайте больше о mysqli::query()
и / или PDO::query()
.
SELECT * FROM obojok WHERE id_uzivatela = ‘». $ _ SESSION [‘ uzivatel ‘] [‘ id ‘].»‘ ИЛИ id_zvierata IS NULL