2012-10-15 51 views
0

我使用joomla開發網站,但我遇到了一個奇怪的錯誤。我在下面的代碼語法錯誤:處理單引號衝突的Mysql

$q = "TRUNCATE TABLE ".$db->quote('#__csvi_available_fields'); 

上運行這給輸出:

TRUNCATE TABLE 'erx_csvi_available_fields' 

然而MySQL顯示了一個錯誤:

JDatabaseMySQL::query: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''#__csvi_available_fields'' at line 1 SQL=TRUNCATE TABLE '#__csvi_available_fields'

奇怪的是,當我運行沒有引號,它運行正常:

TRUNCATE TABLE erx_csvi_available_fields <-- works without problem 

有什麼想法這裏出了什麼問題?

回答

3

至於其他已經說的不對的報價已被添加。

當使用Joomla的JDatabase來提供引用時,有兩種不同的函數可以爲數值,數據庫,表或列/字段名稱調用一個值。

爲了讓你的榜樣行的工作,你需要使用quoteName()如下:

$q = "TRUNCATE TABLE ".$db->quoteName('#__csvi_available_fields'); 

$db->quote()被用於引用在SQL中使用的值。

您可以通過/libraries/joomla/database/database.php瞭解抽象如何工作。

+0

正確的答案和很好的解釋。 – atpatil11

3

不使用單引號「'」。使用「`」(留給鍵盤上的數字)。正常的單引號是字符串,一樣的雙引號