P粉8795174032023-08-26 12:59:05
首先,您必須接受這樣一個事實:如果您的查詢沒有找到任何行,則意味著沒有匹配,即使您可以發誓資料是正確的嗯>。當查詢未傳回任何行時,則表示沒有與條件相符的行。所以你必須找出 - 為什麼。但首先您需要確保您的查詢正確:
首先,您需要確保您的查詢實際上運行時沒有錯誤,因為「無結果」可能表示查詢中存在錯誤。有關詳細信息,請參閱這些答案: pdo 和 mysqli。
檢查您的條件。存在互斥條件,例如 WHERE col=1 AND col=2
。它永遠不會傳回任何行。嘗試簡化條件,直到它開始傳回一些行,然後細化條件以獲得所需的結果。
但是好吧,沒有錯誤,條件正確,並且您可以發誓表中的資料與您的查詢相符。儘管如此,仍然存在一些陷阱:
首先,如果涉及變量,請確保它存在並且實際上包含一些值。
然後檢查值本身。輸入資料(或資料庫)中可能存在一些轉換後的或不可列印的字元。例如換行符或特殊編碼的符號,或轉換為 HTML 實體的某些字符,例如 <<
和 >
。因此,包含
的查詢永遠不會符合文字
。為了快速檢查,您可以使用 rawurlencode()
函數,它將所有非拉丁字元轉換為程式碼,從而使它們可見。
問題是,這只是一個猜測,沒有人可以告訴您實際問題是什麼,因為它是您的資料庫、您輸入資料並且只有< strong>您可以找到問題。
我寫了一篇文章,解釋了如何調試 PDO 問題。
要偵錯特定問題,您需要
urlencode()
函數會有所幫助,顯示資料庫和輸入中的所有無法列印和轉換的字元。 另一個常見問題是當您有多個資料庫並連接到不包含所請求資料的錯誤資料庫時。這個問題與這個問題類似,所以只需遵循相同的例程即可,只檢查資料行而不是表格列表。
這是一種罕見的情況,但為了確保萬無一失,請按照此很好的答案中的清單進行操作