Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Помогите добавить многоуровневый массив в БАЗУ

Сообщения:  [1-10]   [11-14] 

 
 автор: Trianon   (07.01.2015 в 17:43)   письмо автору
 
   для: confirm   (07.01.2015 в 17:25)
 

>Подготовленный, это не апострофы, если все значения массива это числа, достаточно array_map('Intval', $array))

Именно.

> Если строки, mysql_real_escape_string и кавычки.

Именно! И кавычки.

То, что mysql_real_escape_string сама не обрамляет кавычками экранированный вариант - существенное упущение разработчиков.

  Ответить  
 
 автор: confirm   (07.01.2015 в 17:25)   письмо автору
 
   для: Trianon   (07.01.2015 в 17:07)
 

Подготовленный, это не апострофы, если все значения массива это числа, достаточно array_map('Intval', $array)). Если строки, mysql_real_escape_string и кавычки.

  Ответить  
 
 автор: confirm   (07.01.2015 в 17:22)   письмо автору
 
   для: bellator001   (07.01.2015 в 17:13)
 

А подумать?

Это я в примере написал имя массива полей формы для примера $array. Вы думаете я должен догадаться как у вас он реально называется и подставить его?

Вместо $array у вас должно быть то имя, что определяет этот массив.

  Ответить  
 
 автор: bellator001   (07.01.2015 в 17:13)   письмо автору
 
   для: confirm   (07.01.2015 в 17:05)
 

Warning: implode(): Argument must be an array in E:\bellator001\www\admin\module\module.php on line 2400

Notice: Array to string conversion in E:\bellator001\www\admin\module\module.php on line 2400

  Ответить  
 
 автор: Trianon   (07.01.2015 в 17:07)   письмо автору
 
   для: confirm   (07.01.2015 в 16:54)
 

>где $val - это подготовленный массив данных формы соответственно их типу
подготовленный массив уже оказался бы окружен апострофами (поэлементно) :)).
иначе какой же он подготовленный?

  Ответить  
 
 автор: confirm   (07.01.2015 в 17:05)   письмо автору
 
   для: bellator001   (07.01.2015 в 15:33)
 

А для таких данных

<?
$sql 
'INSERT INTO `table`(`name`, `text`, `img`, `tags`) VALUES ('implode('),(' array_map(function($v) {
    return 
'"' implode('","' array_map('mysql_real_escape_string'$v)) . '"';
}, 
$array)) . ') ....';

  Ответить  
 
 автор: bellator001   (07.01.2015 в 17:03)   письмо автору
 
   для: Лена   (07.01.2015 в 16:28)
 

Лена, Ваш ответ мне очень нравиться))
Дело в том, что у меня есть сайт с видео контентом. Т.е. видео это ссылки с youtube в основном.

И в youtube API есть такой фраймворк Zend_Gdata_YouTube

я вывожу на свой админ панель нужные мне видео с ютуб и удаляю не нужные. Потом я _POST запросом отправляю полученные данные в обработчик. и в выходе получается такой массив)) По одному я могу добавить, мне так не удобно

  Ответить  
 
 автор: confirm   (07.01.2015 в 16:54)   письмо автору
 
   для: bellator001   (07.01.2015 в 16:26)
 

Если у формы одно поле имени, то достаточно одной функции, чтобы приготовить это для помещения в базу:

<?
$sql 
'INSERT INTO table (field_name) VALUES (' implode('),('$val) . ') ....';


где $val - это подготовленный массив данных формы соответственно их типу.

  Ответить  
 
 автор: Лена   (07.01.2015 в 16:28)   письмо автору
 
   для: bellator001   (07.01.2015 в 16:26)
 

Вам как-то по-другому форму надо было делать, расскажите, что вы там делаете подробнее...
Как вариант из того, что вы уже наделали:

<?php
$n 
$t '';
$arr = array('name'=>array(115000917,115000916,115000915),'text'=>array('Щит R1 C асмодианина 54-го уровня','Щит R1 B асмодианина 54-го уровня','Щит R1 A асмодианина 54-го уровня'));//ваш массив
$arr_res  = array();
foreach(
$arr as $k => $v) {

     foreach(
$v as $key => $val) {
        
$arr_res[$key][$k] = $val;
     }

}
  print 
"<pre>";
  
print_r($arr_res); //смотрим, что за массив получился, можно и не распечатывать

  
foreach($arr_res as $val) {
     
$n $val["name"];
     
$t $val["text"];
     
$sql "INSERT INTO `table`(`name`, `text`) VALUES ('$n','$t')";
     
$res mysql_query($sql);
  }

  Ответить  
 
 автор: bellator001   (07.01.2015 в 16:26)   письмо автору
 
   для: Лена   (07.01.2015 в 16:01)
 

<form> 

<input type="text" name="name[]" > 
<input type="text" name="name[]" > 
<input type="text" name="name[]" > 

<input type="text" name="text[]" > 
<input type="text" name="text[]" > 
<input type="text" name="text[]" > 
</form> 


из этого

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования