Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Запись массива в БД MySQL
mysql_query("INSERT INTO En_Cloaks (key, value) values ('".$key."', '".$value."')";
выдает Parser Error
Я хочу записать массив $result в Базу данных.
[Bindable] => Bind on Acquire
[Equipment_Slot] => Light Armour
[Armour_Value] => 56
Слова в квадратных скобках - поля таблицы, после знака => значения.
Выдавал: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Cloak','Bind on Acquire','Light Armour ','56')' at line 1
Uchkuma
Отправлено: 11 Октября, 2010 - 20:56:51
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
В названии пальто попалась одинарная кавычка. (Добавление)
Я погорячился. Так не прокатит, конечно же. Экранировать надо каждое название в отдельности, а не всю сформированную строку целиком.
Curse
Отправлено: 11 Октября, 2010 - 21:13:19
Новичок
Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Спасибо, теперь проблема, появляется сообщение "Column count doesn't match value count at row 1"
первое поле у меня ID, Not Null, AutoIncrement, Unique, Primary Key, тип:integer 11.
Разве параметр AutoIncrement не должен автоматически присваивать записи номер?
Uchkuma
Отправлено: 11 Октября, 2010 - 23:08:23
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Curse пишет:
Разве параметр AutoIncrement не должен автоматически присваивать записи номер?
При чем тут это? Вам говорят "количество столбцов не совпадает с количеством значений".
zardoz
Отправлено: 12 Октября, 2010 - 02:07:05
Гость
Покинул форум
Сообщений всего: 100
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Curse, эффективнее будет собрать нужную строку-команду и выполнить одним запросом, например.
Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Uchkuma, я предполагал, что команда действует следующим образом: INSERT INTO имя таблицы (список полей через запятую) VALUES(список значений через запятую);
То есть не тронутым полям присваивается значение по умолчанию... я не прав?
zardoz, да было бы проще, но за 1 цикл я получаю только 1 строку таблицы
В массив набираются найденные значения по типу "[Имя поля] => значение". И заранее я не знаю, какие поля существуют в документе, а каких нет. После прохождения по документу мне нужно записать данные массива в таблицу.
Какие то поля остаются без значений. Что в таком случае делать?
zardoz
Отправлено: 12 Октября, 2010 - 20:35:48
Гость
Покинул форум
Сообщений всего: 100
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Curse пишет:
То есть не тронутым полям присваивается значение по умолчанию... я не прав?
Значение по умолчанию присваивается полям которые не перечислены в списке полей INSERT INTO имя таблицы (список полей через запятую).... Если поле указано в этом списке то нужно задать ему значение в VALUES(список значений через запятую)
Curse пишет:
И заранее я не знаю, какие поля существуют в документе
И что вы делаете с полями которых еще нет в БД но есть в документе?
С уважением.
Uchkuma
Отправлено: 12 Октября, 2010 - 21:03:17
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Curse, выведите мне echo уже сформированной строки запроса.
Curse
Отправлено: 12 Октября, 2010 - 21:05:23
Новичок
Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
я не могу перечислить список полей через запятую, потому что не знаю какие из них окажутся с пустыми значениями в массиве.
zardoz пишет:
И что вы делаете с полями которых еще нет в БД но есть в документе?
В БД все поля есть, а вот в массив заносятся только те поля, которым присвоены данные, найденные в документе. Поэтому и возникла проблема с записью массива. MySQL видимо ждет данных по всем полям, а на запись идут только поля со значениями. (Добавление)
Uchkuma пишет:
Curse, выведите мне echo уже сформированной строки запроса.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.