gpt4 book ai didi

mysql - Drupal 6 数据库插入 : Strings are getting escaped

转载 作者:行者123 更新时间:2023-11-29 14:52:43 25 4
gpt4 key购买 nike

被这个逼疯了......

我正在尝试使用单个 db_query 调用将多行插入到 D6 数据库中。我将行收集为一组字符串,然后将它们收集到一个大字符串中,如下所示:

$theData = "(1, 2, 'a'), (3, 4, 'b'), (5, 6, 'c')";
db_query("insert into {table} (int1, int2, str) values %s", $theData);

($theData 的输入方式与我的代码中的不同;它是我编写的代码的结果 - 一个包含括在括号中的值集的大字符串。)

运行时,我收到如下错误:

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 'insert into
table (int1, int2, str) values (1,2,\'a\' at line 1 query: insert into
table (int1, int2, str) values (1,2,\'a\'),(3,4,\'n\'),(5,6,\'c\')...

因此,db_query 或其他人在将 的值传递给 mysql 之前对字符串进行了转义。我该如何防止这种情况发生?我可以对每组数据进行单独的查询,但由于所有明显的原因,这是错误的/昂贵的。谢谢!

最佳答案

$theDatas = array("(1, 2, 'a')", "(3, 4, 'b')", "(5, 6, 'c')");

foreach($theDatas as $data) {
db_query("insert into {table} (int1, int2, str) values %s", $data);
}

但不建议这样做,您应该这样做:

$theDatas = array(array(1, 2, 'a'), array(3, 4, 'b'), array(5, 6, 'c'));

foreach($theDatas as $data) {
db_query("insert into {table} (int1, int2, str) values (%d, %d, '%s')", $data[0], $data[1], $data[2]);
}

或者您可以序列化($theData)并将其“文本”格式字段作为一个值,然后使用 unserialize() 恢复数组 - 如果您只想存储数据(不搜索、索引等),建议使用这种方法。

关于mysql - Drupal 6 数据库插入 : Strings are getting escaped,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com