0

我正在使用 joomla 开发网站,但我遇到了一个奇怪的错误。我在以下代码中有语法错误:

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

在运行时给出输出:

TRUNCATE TABLE 'erx_csvi_available_fields'

但是mysql显示错误:

JDatabaseMySQL::query: 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''#__csvi_available_fields'' 附近使用正确的语法 SQL=TRUNCATE TABLE '#__csvi_available_fields'

奇怪的是,当我不带引号运行时,它运行正常:

TRUNCATE TABLE erx_csvi_available_fields <-- works without problem

知道这里出了什么问题吗?

4

3 回答 3

3

不要使用单引号“'”。使用“`”(键盘上的数字左侧)。普通单引号用于字符串,与双引号相同

于 2012-10-15T15:27:18.613 回答
3

正如其他人所说,添加了错误的引号。

当使用 JoomlaJDatabase提供引用时,有两个不同的函数,您可以调用一个用于值,另一个用于数据库、表或列/字段名称。

要使您的示例行工作,您需要quoteName()按如下方式使用:

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

$db->quote()用于引用 SQL 中使用的值。

您可以通读/libraries/joomla/database/database.php以了解抽象应该如何工作。

于 2012-10-15T22:15:02.523 回答
2

单引号用于字符串,名称应使用反引号

MySQL 手册

标识符引号字符是反引号 (`)

也看看这个 Stackoverflow 问题:Using backquote/backticks for mysql queries

于 2012-10-15T15:33:37.230 回答