将数组插入表中

时间:2014-01-06 23:23:14

标签: php mysql sql arrays

我正在尝试将数据从数组插入到mysql表中。如果我有例如数组三项,echo的结果是Item1Item2Item3但是在mysql表中只插入了Item3。为什么它不重复插入表格?

<?php
session_start();
foreach($_SESSION['cart'] as $item){
    $sql="INSERT INTO eshopadmin (Item)
          VALUES
          ('$item[item]')";
    echo $item[item];
}
?>

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

 <?php
    session_start();
    $data; //array that will store all the data
    foreach($_SESSION['cart'] as $item){
      // push data to the array
      array_push($data,$item[item]);

      $data= implode(",", $data);
    }
       $sql="INSERT INTO eshopadmin (Item)
              VALUES
              ('$data')";
    ?>

答案 1 :(得分:0)

使用implodeexplode从数据库表字段中检索数组的常见做法。

$array = array('a','b','c');
$sql = 'INSERT INTO eshopadmin (Item) VALUES ("'.implode(',', $array).'")';

数组存储为a,b,c

并在检索时:

$row = mysql_fetch_assoc($result);
$array = explode(',', $row['Item']);

答案 2 :(得分:0)

您也可以使用预准备语句。我已经习惯了MySQLi。

<?php
// loop only if cart is array and has items
if( is_array( $_SESSION['cart'] ) && count( $_SESSION['cart'] ) ){
    // autocommit off
    $mysqli_instance->autocommit( false );
    // prepare insert sql
    $insert_statement = $mysqli_instance->prepare( '
        INSERT INTO eshopadmin
            ( Item )
        VALUES
            ( ? )
    ' );
    // bind variables to the statement
    $insert_statement->bind_param( 'i', $item_array_item_value );
    // loop throught array
    foreach( $_SESSION['cart'] as $item ){
        $item_array_item_value = $item['item'];
        $insert_statement->execute();
    }
    // manually commit
    $mysqli_instance->commit();
    // restore autocommit
    $mysqli_instance->autocommit( true );
}
PS:我刚刚意识到这是一篇非常古老的帖子。不知道为什么它列在最新的饲料中。