我正在尝试将数据从数组插入到mysql表中。如果我有例如数组三项,echo的结果是Item1Item2Item3但是在mysql表中只插入了Item3。为什么它不重复插入表格?
<?php
session_start();
foreach($_SESSION['cart'] as $item){
$sql="INSERT INTO eshopadmin (Item)
VALUES
('$item[item]')";
echo $item[item];
}
?>
答案 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)
使用implode
和explode
从数据库表字段中检索数组的常见做法。
$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:我刚刚意识到这是一篇非常古老的帖子。不知道为什么它列在最新的饲料中。