我用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错误:
无效查询:无法添加或更新子行:外键约束失败(workcard
。task_in
,CONSTRAINT taskListId
FOREIGN KEY(task_list_id
)REFERENCES {{ 1}}(task_list
))
我将implode函数添加到我的php脚本中,这个php脚本解决了插入问题:
id
感谢大家的建议和意见。
答案 0 :(得分:3)
你的$task_list_id
是一个数组,它应该是一个整数。只需将HTML更改为如下所示:
<input type="checkbox" name="tasks[]" ...>
这将解决它。
答案 1 :(得分:0)
我认为$ task_list_id应该是查询的VALUES部分中的$ task_list_id ['task_list_id'],因为它不能是数组。