2015-12-22 96 views
0

即時通訊遇到一個相當奇怪的錯誤。sql只適用於mysql,但不適用於php

我在mysql中寫入我的sql查詢以確保它們在我實現它們之前正在工作。

此查詢工作正常:

SELECT articles.article_id, 
     articles.previewtext, 
     articles.date, 
     articles.title, 
     articles.previewtext, 
     image.thumbnail, 
     articleAuthTable.nickname AS authorNickname, 
     imageAuthTable.nickname AS imageNickname 
FROM articles 
     LEFT JOIN image 
       ON articles.previewimage = image.image_id 
     LEFT JOIN authors AS articleAuthTable 
       ON articles.author = articleAuthTable.author_id 
     LEFT JOIN authors AS imageAuthTable 
       ON image.author = imageAuthTable.author_id 
WHERE articles.categories = 'gamedev' 
     AND articles.article_id > 0 
ORDER BY date DESC; 

,所以我實現了它在我的PHP類(一如既往),並試圖獲得的結果。它們是空的,導致「你在mysql中有錯誤」。 一如既往,我試圖以字符串形式回顯查詢,並在mysql中重新運行。奇蹟般有效。在PHP它沒有。同樣的錯誤。

我試圖凌遲SQL查詢,查找錯誤,這似乎是隻有在聲明中存在:

[...] articles.article_id > 0 

這觸發我的PHP SQL查詢崩潰。它不會以任何方式在PHP中工作。但在MySQL中,它完美地工作,我得到正確的數據。在PHP中的任何其他SQL查詢完美無瑕。

不工作的部分應限制結果。

編輯: PHP代碼

public function queryWhile($query){ 
     $query = htmlspecialchars($query); 
     $this->result = mysqli_query($this->db, $query); 
     if(!$this->result){ 
      echo "No response"; 
      $this->closeDB(); 

     }else{ 
      while ($row = mysqli_fetch_array($this->result)){ 
       $this->resultArray[] = $row; 
      } 
     } 
    } 

     return $this->queryWhile("SELECT articles.article_id, articles.PreviewText, articles.date,articles.Title, articles.previewText, image.thumbnail, articleAuthTable.nickname AS authorNickname, imageAuthTable.nickname AS imageNickname FROM articles LEFT JOIN image ON articles.previewImage = image.image_id LEFT JOIN authors AS articleAuthTable ON articles.author = articleAuthTable.author_id LEFT JOIN authors AS imageAuthTable ON image.author = imageAuthTable.author_id WHERE articles.categories = '".$this->category."' ORDER BY date DESC;"); 
+1

因此,向我們展示PHP/MySQL連接等。 –

+1

您正在使用的PHP代碼? – LeonardChallis

+1

日期是保留字。你不應該將它用於你的列名,但是既然你已經這樣做了,你應該把這個字段用反引號括起來。 –

回答

4
$query = htmlspecialchars($query); 

被轉換

articles.article_id > 0 

articles.article_id > 0 

的MySQL顯然不知道該怎麼做。除非您打算在網頁上打印出來,否則我認爲在SQL語句中使用htmlspecialchars確實沒有什麼好的理由。

+0

這是您的答案。 –

+0

謝謝,你的回答是對的。我對htmlspecialchars有一種誤解。 – TheDomis4

相關問題