为SQL查询构造数组的问题

时间:2011-03-30 11:33:12

标签: php mysql arrays

我有一个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());
非常感谢你能够做到这一点,即使你无法提供帮助。

的问候,

2 个答案:

答案 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。