Intereting Posts
Автоматически создавать json-файл, в котором перечислены все изображения в каталоге? jQuery Загрузка файлов, получение и редактирование данных, которые сохраняются в DB Неожиданный конец ввода JSON от вызова ajax Ошибка «Запрещенный ключевой символ» в CodeIgniter? curl_init () отключен по соображениям безопасности Как отправить массовую почту в cakephp без использования sendgrid разрешение для каталога var / www / html Как заменить смайлики еще после того, как пользователь написал текст и нажмите пробел mkdir всегда устанавливает папки только для чтения? Ошибка при попытке запустить HipHop в «режиме 2 (компиляция HipHop во временном каталоге и запуск скомпилированной программы из командной строки») Результаты автозаполнения текстового поля на основе базы данных SQL Хранение вложенных массивов в файле cookie php как хранить и читать данные json через mysql? Мне нужно написать веб-искатель для конкретного пользовательского агента Как заставить код работать с многомерными массивами?

вставить массив в MySQL DB (неожиданный T_STRING)

Я пытаюсь добавить значения из массива в БД, попробовал много вариантов, но все равно не повезло. С другими способами я могу вставить в 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 ) или, по крайней мере, один с подсветкой ошибок, чтобы предотвратить распространенные ошибки, подобные этому.