簡體   English   中英

MySQL-WHERE子句中的自定義錯誤

[英]MySQL - Custom error in WHERE clause

我正在開發與MySQL數據庫連接的PHP腳本。 我遇到的問題是必須優化查詢,因為我處理了大量信息,並且為此,我要進行大量查詢。

舉一個例子,我不會寫一個大查詢,而是一個讓您能夠看到我需要的查詢:

SELECT db1.name, db1.pass, db1.user_id, db2.datetime, db2.user_id 
FROM database1 db1, database2 db2 
WHERE db1.name = 'name' 
AND db1.pass = 'pass' 
AND db1.user_id = db2.user_id

我需要知道查詢是否由於名稱和密碼不正確,或者因為兩個表中的user_id不相等而失敗。

基本上,我需要在查詢中返回錯誤號或類似內容,以便能夠識別查詢中的錯誤並輸出自定義消息:

提前致謝!

當由於不滿足特定謂詞而沒有返回任何行時,SQL SELECT語句不旨在返回“錯誤號”或“錯誤消息”。

(通過“查詢失敗”和“查詢中的錯誤”,我假設您是指查詢不返回任何行,因為不滿足謂詞(即是否有任何行“匹配”了WHERE子句),而不是實際的MySQL錯誤。)

給定問題中的示例查詢,可以將其重寫以進行這種檢查。

例如:

SELECT IF(db1.name IS NULL
         ,'Your user and password are incorrect.'
         ,IF(db2.user_id IS NULL
           ,'You don''t have permissions in database2.'
           ,''
       ) AS message
     , db1.name
     , db1.pass
     , db1.user_id
     , db2.datetime
     , db2.user_id 
  FROM (SELECT 1 AS i) i
  LEFT
  JOIN database1 db1
    ON db1.name = 'name' 
   AND db1.pass = 'pass' 
  LEFT
  JOIN database2 db2
    ON db1.user_id = db2.user_id

但是事實上您可以編寫這樣的語句並不意味着這是一個好方法。 (此反模式必須有個名稱。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM