【问题标题】:Inserting 2D Values of Array into SQL将数组的二维值插入 SQL
【发布时间】:2011-06-06 11:30:49
【问题描述】:

现在,我循环了一个表格,最终给了我一个二维数组。

数组 0D
一维用户数组
用户字段 2D

Array ( [1] => Array ( [fname] => qweqwe [lname] => qwewqe [email] => qwewqe [age] => wewqe ) [2] => Array ( [fname] => 123123 [lname] => 123123 [email] => 23123 [age] => 23123 ) )

这是我在字段中输入垃圾时得到的示例。 为了检查我是否可以获得每个表单的值,我使用了这个:

$i = $_POST['number'];
$corporate = $_POST['corporate'];
$x = 1;
print_r($corporate);
而($x {
echo "名字 first name".$corporate[$x]["fname"].".";
}

使用它,我将获得第一个用户的名字,然后是第二个,依此类推。这证明我可以从表单中获取 2D 值。

我现在要做的就是将这些值插入到我的表中。请记住,我的 1D 包含每个用户的值。 2D 是值本身。

mysql_query("INSERT INTO学生('fname','lname','email','age') VALUES

我不知道在那之后该放什么。任何帮助将不胜感激。

【问题讨论】:

    标签: sql arrays loops insert multidimensional-array


    【解决方案1】:

    您需要添加一组数据值来插入。格式为 ("Robert","Brown","Robert.Brown@uni.com","34")("Robert","Smith","Robert.Smith@uni.com","33 ")

    您使用的是什么版本的 PHP?

    对于php5.3你可以试试:

    $values = array();
    foreach($corporate as $line){
    $values[] = "('".implode("','",array_map(function($x){ return addslashes($x); })) . "')";
    }
    $query = "INSERT INTO students ('fname','lname','email', 'age') VALUES";
    $query .= implode($values);
    $record = mysql_query($query);
    

    否则,请尝试:

    $values = array();
    foreach($corporate as $line){
    
    foreach($line as $i=>$item) $line[$i] = addslashes($item);
    $values[] = "('".implode("','",$line) . "')";
    }
    $query = "INSERT INTO students ('fname','lname','email', 'age') VALUES";
    $query .= implode($values);
    $record = mysql_query($query);
    

    要解决问题的第二部分,您需要编辑表定义并删除每个字段上的“NOT NULL”定义。你在服务器上有 php my admin 吗?您可以通过编辑表和字段来完成此操作,否则您可以使用 ALTER TABLE 运行 sql。如果您想了解更多信息,请告诉我。

    【讨论】:

    • 我个人使用的是 PHP 5.3。但是,安装它的系统使用的是 5.1 版本。感谢您的回复,但代码不起作用。您错过了 1 个“{”和 2 个“}”。
    • 谢谢伙计,在我的复制和粘贴中一定漏掉了。 (更新)
    【解决方案2】:

    嗯,使用您的查询,深入了解它的含义,我终于让它工作了。

    这是我使用的代码:

      foreach($corporate as $line)
            {
            $values[] = "('".implode("','",$line) . "')";
    
            echo "<br />";
            print_r($values);
            $a = implode(",", $values);
            echo $a;
            }
    
        $query = "INSERT into students (fname, lname,email,age) VALUES $a";
        $sql = mysql_query($query); 
    

    这在我的数据库上运行良好,就像一个魅力。
    但是,当我在朋友数据库或在线数据库上尝试此操作时,我收到一个错误,要求我为每个字段指定一个值。由于某种原因,它不能输入 NULL 值。

    我正试图找出原因,但我的问题的要点已经解决。
    如果您知道是什么导致了我的错误,请随时发表评论。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多