我有一个1维的字符串数组($ answers)。我希望将每个字符串作为一个新记录存储为一个long,并将itemId(每个答案的相同itemId)存储到我的表“answers_tb”中。
我试过.....
使用foreach构造一个新的数组二维数组,使用$ answers数组和itemID,然后将这个新数组插入到我的查询中。
不能正常工作。
我收到此错误:
Column count doesn't match value count at row 1
这是我的代码:
$records = array();
foreach($answers as $item_id => $text_value) {
$records[] = '("' . $item_id . '","' . $text_value . '")';
}
$sql = "INSERT INTO answers_tb (item_id, text_value) VALUES('" . implode(',', $records)." ')";
mysql_query($sql) or die(mysql_error());
非常感谢你能够做到这一点,即使你无法提供帮助。
的问候,
答案 0 :(得分:3)
除了特殊的问题,只是为了教你一课 你正在以错误的方式处理你的任务,颠倒过来。
说实话,你正在编写一个构建一些文本的程序 所以,首先,知道你想要获得什么样的特定文本是非常方便的。因此,您必须手动编写所需的SQL查询并在SQL控制台中运行以查看它是否正常或有任何错误。如果您在此阶段遇到任何问题,可以在 mysql 标记下询问您需要什么查询。
其余的很容易。完成程序后,只需打印出结果,并与之前的例子进行比较。然后更正您的代码以使它们匹配。重复。
完成。
总是这样做你的工作,你就没有问题。
答案 1 :(得分:0)
这应该有效:
$records = array ();
$itemid = 3; // or any arbitrary value
foreach ($answers as $text_value) {
$records[] = '("' . $itemid . '","' . $text_value . '")';
}
$sql = "INSERT INTO answers_tb (item_id, text_value) VALUES " . implode(',', $records);
mysql_query ($sql)
or die (mysql_error ());
使用您当前的解决方案,您可以创建一个类似的查询:
INSERT INTO answers_tb (item_id, text_value) VALUES (('1', 'asd'),('2', 'bsd'))
看起来像:
INSERT INTO answers_tb (item_id, text_value) VALUES ('1', 'asd'),('2', 'bsd')
所以你不需要额外的parens。