Foreach查询插入多行PHP不工作?

Foreach查询插入多行PHP不工作?,php,mysql,Php,Mysql,我在谷歌上搜索并测试过,但无法将下面的php脚本插入MySQL数据库。当我直接在mysql管理工具中运行查询时,INSERT可以工作。我想在中的表task\u中将查询插入多行 我测试了我的数据库/表连接,一切正常,所以有人能解释一下为什么我的php脚本没有在我的数据库表中插入任何数据吗 PHP脚本: <?php if(isset($_POST['tasks'])) { $tasks = $_POST['tasks']; foreach ($tasks as $task_li

我在谷歌上搜索并测试过,但无法将下面的php脚本插入MySQL数据库。当我直接在mysql管理工具中运行查询时,INSERT可以工作。我想在中的表
task\u中将查询插入多行

我测试了我的数据库/表连接,一切正常,所以有人能解释一下为什么我的php脚本没有在我的数据库表中插入任何数据吗

PHP脚本:

<?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>
我的表格任务\u如下图所示:

Array
(
    [task_list_id] => 1
)
Array
(
    [task_list_id] => 2
)
Array
(
    [task_list_id] => 8
)
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\u list\u id需要INT并得到一个字符串,因此它返回了以下sql错误:
无效查询:无法添加或更新子行:外键约束失败(
workcard
task\u in
,约束
taskListId
外键(
task\u list\u id
)引用
task\u list

我在php脚本中添加了内爆函数,该php脚本解决了插入问题:

<?php
if(isset($_POST['tasks'])) {
    $tasks = $_POST['tasks'];
    foreach ($tasks as $task_list_id) {
        $values = implode('""', $task_list_id);
        $sql = mysql_query("INSERT INTO task_in (task_list_id, customer_id, user_id, created_at) 
            VALUES ('$values', '1', '1', NOW())");
    }
    if (!$sql) {
    die('Invalid query: ' . mysql_error());
    }
}
?>

您的
$task\u list\u id
是一个数组,它可能应该是一个整数。只需将HTML更改为如下所示:

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


这将修复它。

您的
$task\u list\u id
是一个数组,它可能应该是一个整数。只需将HTML更改为如下所示:

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


这将修复它。

您的
$task\u list\u id
是一个数组,它可能应该是一个整数。只需将HTML更改为如下所示:

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


这将修复它。

您的
$task\u list\u id
是一个数组,它可能应该是一个整数。只需将HTML更改为如下所示:

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



这将解决它。

我认为$task\u list\u id应该是$task\u list\u id['task\u list\u id'],因为它不能是数组。

我认为$task\u list\u id应该是$task\u list\u id['task\u list\u id'],因为它不能是数组。

我认为$task\u list\u id应该是$task\u id['task\u list\u id']在查询的VALUES部分,因为它不能是数组。

我认为$task\u list\u id应该是$task\u list\u id['task\u list\u id',在查询的VALUES部分,因为它不能是数组。

尽管您应该包含由
mysql\u error
报告的错误消息,而且对于初学者来说,根本不使用
mysql\u*
函数,我猜您有一个SQL错误,因为
task\u id\u unique
int(11)NOT NULL`没有插入您的查询'$task\u list\u id'更改为'.$task\u list\u id'。'要正确调试此错误,您需要从
foreach
循环中回显
$SQL
变量。要准确查看作为查询语句生成的内容@费耶斯,你是对的。查看我的更新。我已从标题中删除。接受答案会自动将其标记为已解决。虽然您应该包含由
mysql\u error
报告的错误消息,并且对于初学者来说根本不使用
mysql\u*
函数,但我猜您可能因为
task\u id\u unique
int(11)而出现SQL错误NOT NULL`不随查询插入'$task\u list\u id'更改为'.$task\u list\u id.''要正确调试,需要从
foreach
循环中回显
$sql
变量。要准确查看作为查询语句生成的内容@费耶斯,你是对的。查看我的更新。我已从标题中删除。接受答案会自动将其标记为已解决。虽然您应该包含由
mysql\u error
报告的错误消息,并且对于初学者来说根本不使用
mysql\u*
函数,但我猜您可能因为
task\u id\u unique
int(11)而出现SQL错误NOT NULL`不随查询插入'$task\u list\u id'更改为'.$task\u list\u id.''要正确调试,需要从
foreach
循环中回显
$sql
变量。要准确查看作为查询语句生成的内容@费耶斯,你是对的。查看我的更新。我已从标题中删除。接受答案会自动将其标记为已解决。虽然您应该包含由
mysql\u error
报告的错误消息,并且对于初学者来说根本不使用
mysql\u*
函数,但我猜您可能因为
task\u id\u unique
int(11)而出现SQL错误NOT NULL`不随查询插入'$task\u list\u id'更改为'.$task\u list\u id.''要正确调试,需要从
foreach
循环中回显
$sql
变量。要准确查看作为查询语句生成的内容@费耶斯,你是对的。查看我的更新。我已从标题中删除。接受答案会自动将其标记为已解决。