2012-10-15 55 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

不使用单引号“'”。使用“`”(留给键盘上的数字)。正常的单引号是字符串,一样的双引号