Foreach查询插入多行PHP无法正常工作?

时间:2014-11-27 11:36:38

标签: php mysql

我用Google搜索并测试但无法将我的PHP脚本插入我的MySQL数据库。当我直接在我的mysql管理工具中运行查询时,INSERT可以工作。我想将查询插入表task_in中的多行。

我测试了我的数据库/表连接,没关系,所以有人可以解释为什么我的php脚本不会在我的数据库表task_in中插入任何数据吗?

PHP SCRIPT:

<?php
if(isset($_POST['tasks'])) {
    $tasks = $_POST['tasks'];
    foreach ($tasks as $task_list_id) {
        $sql = mysql_query("INSERT INTO task_in (task_list_id, customer_id, user_id, created_at) 
            VALUES ('$task_list_id', '1', '1', NOW())");
    print_r($task_list_id);
    }
}
?>

表单的一部分:

<td><input type="checkbox" name="tasks[][task_list_id]" value=<?php echo($key[0]);?>></td>
<td><input type="checkbox" name="tasks[][task_list_id]" value=<?php echo($key[1]);?>></td> </tr>
    <td>Nav.rep For</td>

foreach循环中的print_r返回:

Array
(
    [task_list_id] => 1
)
Array
(
    [task_list_id] => 2
)
Array
(
    [task_list_id] => 8
)

我的表task_in如下所示:

CREATE TABLE `task_in` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `task_id_unique` int(11) NOT NULL,
  `task_list_id` int(11) NOT NULL,
  `customer_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `taskListId` (`task_list_id`),
  CONSTRAINT `taskListId` FOREIGN KEY (`task_list_id`) REFERENCES `task_list` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8;

聚苯乙烯。我完全了解上面的代码+ PDO和Mysqli中的sql注入,它会尽快更改。所以请不要对此发表评论。


更新已解决。

@axiac建议有效,同样由@fejese评论,我的表有一个外键 taks_list_id 期待 INT 并得到一个字符串,因此它返回了以下sql错误:
无效查询:无法添加或更新子行:外键约束失败(workcardtask_in,CONSTRAINT taskListId FOREIGN KEY(task_list_id)REFERENCES {{ 1}}(task_list))

我将implode函数添加到我的php脚本中,这个php脚本解决了插入问题:

id

感谢大家的建议和意见。

2 个答案:

答案 0 :(得分:3)

你的$task_list_id是一个数组,它应该是一个整数。只需将HTML更改为如下所示:

<input type="checkbox" name="tasks[]" ...>

这将解决它。

答案 1 :(得分:0)

我认为$ task_list_id应该是查询的VALUES部分中的$ task_list_id ['task_list_id'],因为它不能是数组。