将两个数组插入到一个mysql表中

Posted

技术标签:

【中文标题】将两个数组插入到一个mysql表中【英文标题】:Insert two arrays into one mysql table 【发布时间】:2011-10-10 07:36:33 【问题描述】:

我是 php 新手,一直在尝试将两个数组中的数据插入到一个 mysql 表中。

表格存储以下字段:datecase_idstatusid

case_id 对于插入到一个语句中的所有记录都是相同的,并且值来自会话变量。

date 数组和status_id 数组都从表单发布;我知道这两个数组都可以正常发布,因为我使用了 for each 循环将两个数组分别插入到表中。

任何帮助将不胜感激。我已将 foreach 条件留空以获取建议。

$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$status = $_POST['statuses'];
$date = $_POST['dates'];

foreach() 
    $sql = " INSERT INTO casestatus (date, case_id, statusid) VALUE 
                                    ('$date', '$caseid', '$statusid') ";

    if (!mysqli_query($link, $sql)) 
        $error = 'Error assigning selected statuses to case.';
        include 'error.php';
        exit();
    

【问题讨论】:

【参考方案1】:

试试这个。

// Avoid SQL Injections.
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']); 
$statuses = $_POST['statuses']; 
$dates = $_POST['dates'];

$i = 0;
foreach($statuses as $status)

  if($i < sizeof($dates))
  
    $statusid = mysqli_real_escape_string($status);
    $date = mysqli_real_escape_string($dates[$i]); 
    $sql = "INSERT INTO casestatus (date, case_id, statusid) VALUES ('$date', '$caseid', '$statusid')";
    $i++:
  
  // etc...

不要忘记在 INSERT 语句中将 VALUE 替换为 VALUES

【讨论】:

非常感谢您的回复,我已将您提供的代码替换为以下错误:为 foreach() 提供的参数无效 在更新的解决方案中,我是否删除了 for each 循环?还是我只是用新行替换现有行 删除 foreach 循环,因为来自 $_POST 调用的值是单个值。 $_POST 调用的值是数组,当我运行修改后的代码时,它会为每个 $_POST 变量抛出此错误.... mysqli_real_escape_string() 期望参数 2 是字符串,给定数组跨度> 我把它改成了 ;它不会抛出语法但仍然相同的错误 mysqli_real_escape_string() 期望参数 2 是字符串,给定数组【参考方案2】:

您需要在所有值上使用mysqli_real_escape_string,除非您喜欢成为 pwnd。

$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']); 
$statuses = mysqli_real_escape_string($link,$_POST['statuses']); 
$dates = mysqli_real_escape_string($link,$_POST['dates']);  

【讨论】:

是的,当然,总是忘记写在上面的帖子里

以上是关于将两个数组插入到一个mysql表中的主要内容,如果未能解决你的问题,请参考以下文章

将两个数组插入一个mysql行

使用 CodeIgniter 将数组数据插入两个表中

我想将两个不同的表行值插入到单个表中,

Php,MySql - 将数据作为键值对插入两个表中

如何将来自三个 Perl 数组的数据插入到单个 MySQL 表中?

MySQL LOAD DATA 到两个相关表中