【问题标题】:Insert two arrays into one mysql table将两个数组插入到一个mysql表中
【发布时间】: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();
    }
}

【问题讨论】:

    标签: php mysql arrays insert foreach


    【解决方案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']);  
    

    【讨论】:

    • 是的,当然,总是忘记写在上面的帖子里
    猜你喜欢
    • 2012-04-22
    • 2013-07-21
    • 2012-02-27
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多