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 :: Парадокс при добавлении данных в ячейку БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ant
Отправлено: 02 Мая, 2011 - 09:39:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Янв. 2011  
Откуда: Украина, Крым


Помог: 0 раз(а)




Здравствуйте, уважаемые форумчане.

PHP:
скопировать код в буфер обмена
  1. for ($i=0; $i<3; $i++)
  2. {
  3.   $a=array('абв', 'где', 'жзи');
  4.   $city=$a[$i];
  5.   $query="INSERT INTO cities (city) VALUES ('$city')";
  6.   mysql_query($query);
  7. }


Все добавилось, прекрасно. Вот результат:
http://img109[dot]imageshack[dot]us/i/33301504[dot]png

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

PHP:
скопировать код в буфер обмена
  1. for ($i=0; $i<3; $i++)
  2. {
  3.   $city=$array[$i]['city'];
  4.   echo $city.'<br>';
  5.   $query="INSERT INTO cities (city) VALUES ('$city')";
  6.   mysql_query($query);
  7. }


Вот результат в браузере, то есть с массивом все в порядке.
http://img191[dot]imageshack[dot]us/i/70745548[dot]png

Но в таблицу этот массив не попал, то есть три строки добавились, но с пустыми ячейками поля city.
http://img43[dot]imageshack[dot]us/i/39338634[dot]png

Подскажите, как так получается? Или я в упор чего-то не замечаю после бессонной ночи?
 
 Top
Саныч Модератор
Отправлено: 02 Мая, 2011 - 10:49:59
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




лучше так
PHP:
скопировать код в буфер обмена
  1. $a=array('абв', 'где', 'жзи');
  2. $query = '';
  3. foreach($a as $v) $query .= ', ("'.$v.'")';
  4. mysql_query('NSERT INTO cities (city) VALUES '.substr($query,2));


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DlTA
Отправлено: 02 Мая, 2011 - 10:56:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ant, вместо "echo $city.'<br>';" лучше выведите в браузер текст запроса, тогда будет понятно.
 
 Top
ant
Отправлено: 02 Мая, 2011 - 11:06:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Янв. 2011  
Откуда: Украина, Крым


Помог: 0 раз(а)




Вроде все нормально с текстом запроса...

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO cities (city) VALUES ('Санкт-Петербург')
  2. INSERT INTO cities (city) VALUES ('КАД (Мурманское шоссе)')
  3. INSERT INTO cities (city) VALUES ('Разметелево')


http://img812.imageshack.us/i/99321283.png

(Отредактировано автором: 02 Мая, 2011 - 11:08:07)

 
 Top
Alex_pac
Отправлено: 03 Мая, 2011 - 00:20:45
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




ant пишет:

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO cities (city) VALUES ('Санкт-Петербург')
  2. INSERT INTO cities (city) VALUES ('КАД (Мурманское шоссе)')
  3. INSERT INTO cities (city) VALUES ('Разметелево')


это не запрос а целых 3 запроса

вот запрос

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO cities (city) VALUES ('Санкт-Петербург'), ('КАД (Мурманское шоссе)'), ('Разметелево')
 
 Top
ant
Отправлено: 03 Мая, 2011 - 04:58:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Янв. 2011  
Откуда: Украина, Крым


Помог: 0 раз(а)




Саныч
Alex_pac
Я не прав, нужно было задавать вопрос максимально просто и по существу.

Тогда такой вариант.
PHP:
скопировать код в буфер обмена
  1. $query="INSERT INTO cities (city) VALUES ('Санкт-Петербург')";
  2. mysql_query($query);


Результат:


Теперь АБСОЛЮТНО ТО ЖЕ САМОЕ, но только вместо 'Санкт-Петербург' переменная $city. И вывод самого запроса в браузер, чтобы убедиться в его правильности.

PHP:
скопировать код в буфер обмена
  1. $city=$array[0]['city'];
  2. $query="INSERT INTO cities (city) VALUES ('$city')";
  3. mysql_query($query);
  4. echo $query;


В результате добавляется новая запись, но поле city ПУСТОЕ.


Запрос в браузере, вроде все верно:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO cities (city) VALUES ('Санкт-Петербург')



Почему поле city осталось пустым? Я уже не знаю, что думать...

(Отредактировано автором: 03 Мая, 2011 - 05:01:39)

 
 Top
Alex_pac
Отправлено: 03 Мая, 2011 - 06:42:17
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Цитата:
В результате добавляется новая запись, но поле city ПУСТОЕ.


значит элемент массива

$array[0]['city'];

пустой, вы его не проверяли? не так ли?
 
 Top
ant
Отправлено: 03 Мая, 2011 - 07:09:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Янв. 2011  
Откуда: Украина, Крым


Помог: 0 раз(а)




Да нет, в том то и проблема, что не пустой. Элемент массива $array[0]['city'] содержит 'Санкт-Петербург' (проверял с помощью echo). Вот почему он оставляет поле city пустое? Какие могут быть варианты? На ум уже ничего не приходит...
(Добавление)
Проблема очевидно в элементе массива $array[0]['city']. Он точно не пустой, так как echo выводит его значение. Поэтому возникает такой вопрос. Может ли кодировка быть причиной моей проблемы? В поле city указана кодировка utf8-general-ci, а вот в какой кодировке находится массив, не знаю. Хотя если рассуждать логически, utf8 должен вмещать все символы, так что вряд ли... Но тогда в чем причина?
(Добавление)
Все, тема закрыта. Причина проблемы была в том, что массив был в одной кодировке, а поле таблицы в другой. Полтора дня в ... (((
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB