我有一个特别棘手的问题,我必须解决,但尚未破解坚果。 我已经在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);
但没有人有任何想法吗?