如何解决将数据插入表中时Drupal DB错误:转义引号?
| 我有一个特别棘手的问题要解决,但尚未解决。 我已经在drupal问题队列中发布了有关此内容的信息,但是我可能会被忽略。这是Drupal发行号1061458的链接。 这是在Drupal 6上使用Apache mysql和php在我的centos框中完成的。 我试图每次有人到达页面时进行插入,所以我在其中放了一个愚蠢的空白页面,里面有创建内容,然后我将动态块放在那里,以便从模块中运行我的代码。我使该块调用一个函数,该函数可获取用户的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和组的位置。这是模块安装文件中的数据库格式
$schema[\'group_landing_connection\'] = array(
\'fields\' => array(
\'dbid\' => array(\'type\' => \'serial\',\'unsigned\' => TRUE,\'not null\' => TRUE,),\'ipaddress\' => array(\'type\' => \'varchar\',\'length\' => \'30\',\'group\' => array(\'type\' => \'varchar\',\'length\' => \'10\',\'primary key\' => array(\'dbid\'),
);
我尝试了将dbid设置为null并设置自动递增值的方法。运行cron并刷新缓存。块缓存已关闭。我什至尝试使用%b进行二进制数据输入,但是不行。我尝试删除替换值和硬编码数字,但不走运。我尝试在有效的数据库调用之后立即执行此调用,但该调用仍然失败,因此我不认为这是该块的错误。我什至尝试使用此代码进行更安全的db_write_record调用
$data = array(
\'ipaddress\' => \'3\',\'group\' => \'3\',);
drupal_write_record(\'np_group_landing_connection\',$data);
但是,任何人有任何想法都没有运气吗?
解决方法
组是保留字,重命名您的列
http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。