2013-10-10 72 views
0

我發現了類似的問題,但仍無法解決我的問題。下面是相關代碼:查詢在phpmyadmin中可用,但不在PHP腳本中

$query = "SELECT * FROM conceptos WHERE descripcion = '$descripcion'"; 
if ($result = mysql_query($query,$connection)){ 
    if (mysql_num_rows($result) > 0){ 
     //Do something 
    } else { 
     die($query); 
     exit; 
    } 
} else { 
    die(mysql_errno() . ' - ' . mysql_error()); 
    exit; 
} 

我沒有與連接或權限問題,因爲這個代碼片段是一個循環內,其他查詢進入「有所作爲」一節。但是當我使用回顯的查詢並在phpMyAdmin中執行它時,它會按預期返回1個值。爲什麼?什麼原因會導致這種行爲?提前感謝您的任何建議。

+1

更改'die($ query);'到'die(mysql_error())'並查看它輸出的內容。 –

+3

另外請注意,如果可以,不推薦使用'mysql_'函數,則應考慮切換到'mysqli'或'PDO'。 – TheWolf

+0

@AmalMurali mysql_errno()輸出0和mysql_error()不輸出任何內容。該查詢沒有錯誤,因爲它進入if部分而不是代碼的其他部分。問題是,查詢返回沒有值和相同的查詢(從死)複製並粘貼在myphpadmin得到一個結果! –

回答

1

試試這個「SELECT * FROM conceptos」。如果有效,則在「WHERE ...」中有錯誤的查詢。

+0

這個相同的查詢執行大約1000次之前(與where部分)的問題...查詢本身沒有錯誤,問題是它沒有結果,但它必須有。如果在phpmyadmin中執行與where部分相同的查詢,它將按預期工作。 –

1

您確定您的查詢正在搜索正確的描述嗎?雙引號應該擴展所有的內部變量,但你也有單引號以及在複製到stackoverflow的情況下。

這將確保說明擴大的情況下。

$query = "SELECT * FROM conceptos WHERE descripcion = '" . $descripcion . "'"; 

其次,您是否驗證了您正在使用的變量內容,正如@crotos所建議的那樣?

mysql_也被棄用,所以你應該使用PDO,或者至少使用mysqli_。

+0

我知道mysql_ deprected函數,但這是一箇舊的項目。 –

0

您可以嘗試設置您的mysql服務器的一般查詢日誌,並查看確實執行了哪些查詢。請參閱http://dev.mysql.com/doc/refman/5.1/en/query-log.html

另請檢查您的編碼。也許你的mysql連接在ISO8859-1中,你的表字段是UTF-8(或相反)。你的數據中是否有任何口音或特殊字符?

+0

ZeWaren也許我必須重新提出這個問題,也許問題是關於如何在PHP中進行查詢,就像在phpmyadmin中一樣,即在phpmyadmin和php腳本中使用哪種編碼。感謝您的鏈接。 –

4

我有這個問題,發現這是因爲我通過從MS Word直接複製/粘貼到數據庫來完成數據庫的備份。粘貼插入了特殊的傾斜撇號,PHPMYADMIN顯然可以解析,但我的PHP代碼不能。一旦我用標準單引號替換那些,一切都很好。

相關問題