Я пытаюсь добавить значения из массива в БД, попробовал много вариантов, но все равно не повезло. С другими способами я могу вставить в DB только значение последнего массива. Любая помощь будет оценена.
$max=count($_SESSION['cart']); for($i=0;$i<$max;$i++){ $pid=$_SESSION['cart'][$i]['productid']; $ppid=get_product_id($pid); $ppav=get_product_name($pid); $price=get_price($pid); $date=date('Ym-d'); $orderid=mysql_insert_id(); $customerid=mysql_insert_id(); $array['cust_id'] = $customerid; $array['prod_id'] = $ppid; $array['prod_name'] = $ppav; $array['price'] = $price; $array['date'] = $date; $sql1 = array(); foreach( $array as $row ) { $sql1[] = '('null', '.$row['cust_id'].', '.$row['prod_id'].', '.$row['prod_name']', '.$row['price'].', '.$row['date'].')'; } mysql_query('INSERT INTO orders (id, cust_id, prod_id, prod_name, price, date) VALUES '.implode(',', $sql1)); }
$sql1[] = '('null', '.$row['cust_id'].', '.$row['prod_id'].', '.$row['prod_name']', '.$row['price'].', '.$row['date'].')';
вероятно, должно быть
$sql1[] = "(null, '" . $row['cust_id'] . "', '" . etc....
Вы генерируете неправильные строки PHP, вызывая ошибки синтаксиса. И обратите внимание, что этот код уязвим для SQL-инъекций. Несмотря на то, что эти данные, как представляется, выходят из БД изначально, вы все равно можете вводить себя.
Вам не нужно 'для null в вашем заявлении $ sql1:
Пытаться:
$sql1[] = '(null, '.$row['cust_id'] ...
Как отметил Daniel A. White, ваш код очень восприимчив к SQL-инъекции, но вот рабочая версия кода, который вы указали:
<?php $max = count($_SESSION['cart']); for($i = 0; $i < $max; $i++) { $pid = $_SESSION['cart'][$i]['productid']; $ppid = get_product_id($pid); $ppav = get_product_name($pid); $price = get_price($pid); $date = date('Ym-d'); $orderid = mysql_insert_id(); $customerid = mysql_insert_id(); $array['cust_id'] = $customerid; $array['prod_id'] = $ppid; $array['prod_name'] = $ppav; $array['price'] = $price; $array['date'] = $date; $sql1 = array(); foreach($array as $row) { $sql1[] = '(NULL, '.$row['cust_id'].', '.$row['prod_id'].', "'.$row['prod_name'].'", ' . $row['price'] . ', "' . $row['date'] . '")'; } mysql_query('INSERT INTO orders (id, cust_id, prod_id, prod_name, price, date) VALUES ' . implode(',',$sql1)); } ?>
Кроме того, я бы предложил получить достойный редактор кода (я использую Zend Studio, которая является лучшей версией бесплатного Eclipse PDT ) или, по крайней мере, один с подсветкой ошибок, чтобы предотвратить распространенные ошибки, подобные этому.