[英]MYSQL where $var AND IS NULL
我在處理來自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;
}
但是我唯一得到的是這個錯誤:
錯誤:SELECT * FROM obojok,其中id_uzivatela ='******'並且id_zvierata為NULL
您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊以在第1行的'is null AND id_uzivatela ='20170''附近使用正確的語法
您的查詢沒有問題...您看到的錯誤是來自另一個查詢。
從文檔中,$ conn-> query的返回值不應嚴格等於TRUE
失敗時返回FALSE。 對於成功的SELECT,SHOW,DESCRIBE或EXPLAIN查詢,mysqli_query()將返回mysqli_result對象。
如果要查看查詢是否有效,請不要對真實值進行測試,最好對非false進行測試...
$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);
這意味着如果$ res =不等於false,則使$ res =成為$ conn-> query值。 如果為假,則拋出有關相關信息的異常。
如果這樣做,您將不必在$ 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,其中id_uzivatela ='“。$ _ SESSION ['uzivatel'] ['id']。”'OR id_zvierata為NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.