Форумы портала PHP.SU » » Кодировки и все смежное » Парадокс при добавлении данных в ячейку БД

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

1. ant - 02 Мая, 2011 - 09:39:27 - перейти к сообщению
Здравствуйте, уважаемые форумчане.

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

Подскажите, как так получается? Или я в упор чего-то не замечаю после бессонной ночи?
2. Саныч - 02 Мая, 2011 - 10:49:59 - перейти к сообщению
лучше так
PHP:
скопировать код в буфер обмена
  1. $a=array('абв', 'где', 'жзи');
  2. $query = '';
  3. foreach($a as $v) $query .= ', ("'.$v.'")';
  4. mysql_query('NSERT INTO cities (city) VALUES '.substr($query,2));
3. DlTA - 02 Мая, 2011 - 10:56:52 - перейти к сообщению
ant, вместо "echo $city.'<br>';" лучше выведите в браузер текст запроса, тогда будет понятно.
4. ant - 02 Мая, 2011 - 11:06:07 - перейти к сообщению
Вроде все нормально с текстом запроса...

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


http://img812[dot]imageshack[dot]us/i/99321283[dot]png
5. Alex_pac - 03 Мая, 2011 - 00:20:45 - перейти к сообщению
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 ('Санкт-Петербург'), ('КАД (Мурманское шоссе)'), ('Разметелево')
6. ant - 03 Мая, 2011 - 04:58:37 - перейти к сообщению
Саныч
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 осталось пустым? Я уже не знаю, что думать...
7. Alex_pac - 03 Мая, 2011 - 06:42:17 - перейти к сообщению
Цитата:
В результате добавляется новая запись, но поле city ПУСТОЕ.


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

$array[0]['city'];

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

 

Powered by ExBB FM 1.0 RC1