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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Опять про INSERT
 
 автор: Denandi   (29.10.2009 в 13:17)   письмо автору
 
 

Всем привет!
Ранее массировал этот вопрос на форуме, но решение так и не получилось.
Проблема вот в чем:
Через форму поступает N-кол. Массивов (ограничимся одним)
Нужно добавить в DB с помощью конструкции (IN implode).
Результат, ошибка синтак конструкции (IN).
В чем ошибка?
$query = mysql_query("INSERT INTO `products` (test)
VALUES ( IN ('".implode(',',$mas)."') ");

Ранее я спрашивал.. можно ли добавить этой конструкцией, мне все сказали – да.
Я считаю что эта конструкция ЕСТЕСТВЕННА по природе (WHERE id IN (".implode(",",$valid_id).")");)
А эта изначально – ущербна VALUES ( IN ('".implode(',',$mas)."') ")

Заранее благодарен за помощь!

  Ответить  
 
 автор: Trianon   (29.10.2009 в 13:32)   письмо автору
 
   для: Denandi   (29.10.2009 в 13:17)
 

может мы всё же отделим мухи от котлет - синтаксис языка SQL и функции php?
А заодно и вспомним, наконец, синтаксис оператора INSERT.

  Ответить  
 
 автор: Denandi   (29.10.2009 в 13:37)   письмо автору
 
   для: Trianon   (29.10.2009 в 13:32)
 

Спасибо Trianon за отклик! :))
Я рад бы отделить но мне приходится с ними сотрудничать - как с одним целым.

  Ответить  
 
 автор: Trianon   (29.10.2009 в 22:26)   письмо автору
 
   для: Denandi   (29.10.2009 в 13:37)
 

И тем не менее - придется разделить.
http://dev.mysql.com/doc/refman/5.0/en/insert.html

  Ответить  
 
 автор: Meh   (29.10.2009 в 22:18)   письмо автору
 
   для: Denandi   (29.10.2009 в 13:17)
 

Должно быть так:
$query = mysql_query("INSERT INTO `products` (test)
VALUES ( IN ('".implode("','", $mas)."') ");

Каждое значение массива должно быть заключено в одинарные кавычки. А у вас получалось, что весь массив в кавычках.

  Ответить  
 
 автор: Trianon   (29.10.2009 в 22:25)   письмо автору
 
   для: Meh   (29.10.2009 в 22:18)
 

Чушь дважды.
Значения массива никаких кавычек не требуют.

  Ответить  
 
 автор: Meh   (30.10.2009 в 09:27)   письмо автору
 
   для: Trianon   (29.10.2009 в 22:25)
 

Тогда так, гениальный вы наш:

$query = mysql_query("INSERT INTO `products` (test)
VALUES ( IN (".implode(",", $mas).") ");


Но это подходит в случае, если массив содержит только числа.

Первый вариант более правильный, т.к. массив может содержать и дату/время и строки. Он же корректно сработает и с числами.

  Ответить  
 
 автор: Valick   (30.10.2009 в 10:08)   письмо автору
 
   для: Meh   (30.10.2009 в 09:27)
 

Трианон не ваш, он сам по себе (см. фото)
Вам кажется что Вас хотят столкнуть под электричку, но на самом деле хотят натолкнуть на путь истинный. Хотя скорее всего уже не хотят, поэтому заводите нового "перса" и прокачивайте "репу". Если я ещё не совсем понятно излогаю (такое бывает с утра), то речь идёт о сохранности чистоты воды в колодце...

  Ответить  
 
 автор: Denandi   (30.10.2009 в 10:54)   письмо автору
 
   для: Valick   (30.10.2009 в 10:08)
 

Надо закрывать тему, пока не подрались! :)
Все получилось, правда, причину так и не обнаружил..
Склоняюсь к кирил. попаданию. Так как пример заработал после того как я его переписал – заново.
по поводу кавычек - правы все.. пример работает и так и так.
Еще раз спасибо.

  Ответить  
 
 автор: Valick   (30.10.2009 в 11:14)   письмо автору
 
   для: Denandi   (30.10.2009 в 10:54)
 

Темы здесь не закрываются (в обычном понимании), а драк я ещё не видел ни разу.. ругань была, а драк нет ;) Но и ругаться я абсолютно не собираюсь.

  Ответить  
 
 автор: Trianon   (30.10.2009 в 14:56)   письмо автору
 
   для: Meh   (30.10.2009 в 09:27)
 

Так тоже чушь. :)

  Ответить  
 
 автор: Meh   (30.10.2009 в 22:22)   письмо автору
 
   для: Trianon   (30.10.2009 в 14:56)
 

Конечно, полная чушь.
Проглядел, что вносим данные массива только в одно поле test.
Почему-то упёрся в "INSERT INTO `products` () ..."

PS. Электрички и персы - чушь дважды. ;))

  Ответить  
Rambler's Top100
вверх

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