P粉2376895962023-07-26 09:52:29
首先,您必須接受這樣一個事實:如果您的查詢沒有找到任何行,這意味著沒有匹配,即使您可以發誓資料是正確的。當查詢不傳回任何行時,說明沒有行與條件相符。因此,您需要找出原因所在。但首先,您需要確保您的查詢是正確的:
由SQL錯誤引起的問題
首先,您需要確保查詢實際上沒有錯誤,因為「沒有結果」可能意味著查詢中有錯誤。有關詳細信息,請參考以下答案:pdo和mysqli。
由條件引起的問題
檢查您的條件。有一些互斥的條件,例如WHERE col=1 AND col=2。它永遠不會傳回任何行。嘗試簡化條件,直到它開始傳回一些行,然後細化條件以獲得所需的結果。
但是好吧,沒有錯誤,條件也正確,您可以發誓表中有資料與您的查詢相符。然而,仍然存在一些陷阱:
首先,在涉及變數的情況下,請確保變數存在並實際包含某些值。
然後檢查值本身。輸入資料(或資料庫)中可能存在一些轉換或不可列印的字元。例如,換行符或特殊編碼的符號,或某些字元(如<和>)轉換為HTML實體。結果是,查詢包含<abc@abcs.com>的文字將永遠不會匹配文字<abc@abcs.com>。您可以使用rawurlencode()函數進行快速檢查,它將將所有非拉丁字元轉換為程式碼,從而使它們可見。
問題在於,這只是一個猜測,沒有人可以告訴您實際的問題是什麼,因為這是您的資料庫,您的輸入數據,只有您自己才能找到問題所在。
< <我寫了一篇文章,解釋瞭如何調試您的PDO問題。
要偵錯特定的問題,您需要:
另一個常見問題是當您有多個資料庫並連接到錯誤的資料庫時,該資料庫沒有所要求的資料。這個問題與之前的類似,所以只需按照相同的步驟進行,只是檢查的不是表的列表,而是資料行。
這是一個罕見的情況,但為了確保,按照這個很好的答案
#