将数据插入表格时出现Drupal DB错误:Escaped Quotes?

时间:2011-05-25 14:28:34

标签: php mysql drupal drupal-6

我有一个特别棘手的问题,我必须解决,但尚未破解坚果。 我已经在drupal问题队列中发布了这个,但我可能会被忽略。以下是Drupal Issue 1061458的链接。

这是使用apache mysql和php在我的centos盒子上的Drupal 6中完成的。

我每次有人到达页面时都会尝试插入,所以我在那里放了一个愚蠢的空白页面,然后我将动态块放在那里从模块运行我的代码。我将块调用一个函数来抓取用户的ip地址,并在db中存储一个标志,直到该人注册为止。

这是生成的错误

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 'group) VALUES ('','')' at line 1 query: INSERT INTO group_landing_connection (ipaddress,group) VALUES ('','') in /var/www/html/sites/all/modules/MODULE/MODULE.module on line 1130.

使用那些确切的转义引号,这里是块函数中的违规代码

$sql = "INSERT INTO {group_landing_connection} (ipaddress,group) VALUES ('%s','%d')";
db_query($sql,$ip,$group);

上面设置了Ip和组。这是模块安装文件中的db格式

  $schema['group_landing_connection'] = array(
'fields' => array(
  'dbid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE, ),
  'ipaddress' => array('type' => 'varchar', 'length' => '30', 'not null' => TRUE, ),
  'group' => array('type' => 'varchar', 'length' => '10', 'not null' => TRUE, ),
),
'primary key' => array('dbid'),

);

我尝试了很多东西,从将dbid设置为null并生成自动增量值。运行cron并刷新缓存。块缓存已关闭。我甚至尝试使用%b进行二进制数据输入但是没有。我尝试删除替换值和硬编码数字,而不是运气。我尝试在db调用之后立即执行此调用,但仍然失败,所以我不认为这是块的错误。我甚至尝试使用此代码进行更安全的db_write_record调用

$data = array(
  'ipaddress' => '3',
  'group' => '3',
);
drupal_write_record('np_group_landing_connection', $data);

但没有人有任何想法吗?

1 个答案:

答案 0 :(得分:4)

组是保留字,重命名您的列 http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html