【发布时间】:2011-05-25 14:28:33
【问题描述】:
我遇到了一个特别棘手的问题,我必须解决但还没有解决问题。 我已经在drupal问题队列中发布了这个,但我可能只是被忽略了。这是Drupal Issue 1061458的链接。
这是在我的 centos 机器上的 Drupal 6 中使用 apache mysql 和 php 完成的。
每当有人到达一个页面时,我都会尝试进行插入,所以我将一个愚蠢的空白页面放在那里并创建内容,然后我将我的动态块放在那里以从模块运行我的代码。我让块调用一个函数,该函数获取用户的 IP 地址并将其与一个标志一起存储在数据库中,直到该人注册。
这是生成的错误
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);
但运气不好,有人有什么想法吗?
【问题讨论】: