[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Непонятное поведение insert into
deeper
Коллеги, добрый день. Есть PHP код, который парсит данные с открытого источника и заносит информацию в БД MySQL. Спаршенная информация заносится в массив и далее каждый элемент этого массива записываем в БД. Проблема в том, что вместо значения элемента массива $adress[0][0] в БД вставляется текст "Array[0]". Хотя если делать запись в файл, то всё работает корректно.
Вот, собственно, сам инсерт:
$res=mysql_query("INSERT INTO `Employes` (`adress`)
VALUES ('
$adress[0][0]')");


А вот так всё корректно работает:
file_put_contents('log.txt', PHP_EOL.$adress[0][0], FILE_APPEND);


В чём может быть подвох?
Игорь_Vasinsky
а чё гадать то.

чё кажет ?

var_dump($adress[0][0]);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
DragonNoir
$res=mysql_query("INSERT INTO `Employes` (`adress`)
VALUES ('
{$adress[0][0]}')");


_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
deeper
Цитата (Игорь_Vasinsky @ 28.03.2016 - 12:16)
а чё гадать то.

чё кажет ?

var_dump($adress[0][0]);

Вар дамп показывает корректный результат.
deeper
Цитата (DragonNoir @ 28.03.2016 - 12:18)
$res=mysql_query("INSERT INTO `Employes` (`adress`)
VALUES ('
{$adress[0][0]}')");

Спасибо, помогло! А почему вариант без {} не работал?
DragonNoir
Цитата (deeper @ 28.03.2016 - 11:25)
А почему вариант без {} не работал?


Потому что интерпретатор попытался преобразовать в строку $address[0] и это ему удалось - на выходе вы получили слово "Array". Затем он воспринял следующие символы "[0]" как часть строки. В итоге вы получили строку "Array[0]"


_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
sergeiss
deeper, подобные же грабли получишь, если попытаешься сформировать строку вида abcd_1_2, используя переменные
$i=1;
$j=2;
echo "abcd_$i_$j";

Проверь, что будет на выходе :)

Правильный вариант выглядит так:
echo "abcd_{$i}_{$j}";


PS. Даже подсветка кода на форуме подсказывает, что "что-то не так в первом варианте кода". И подсказывает правильно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
deeper
Цитата (sergeiss @ 28.03.2016 - 13:42)
deeper, подобные же грабли получишь, если попытаешься сформировать строку вида abcd_1_2, используя переменные
$i=1;
$j=2;
echo "abcd_$i_$j";

Проверь, что будет на выходе :)

Правильный вариант выглядит так:
echo "abcd_{$i}_{$j}";


PS. Даже подсветка кода на форуме подсказывает, что "что-то не так в первом варианте кода". И подсказывает правильно.

Благодарю smile.gif
Игорь_Vasinsky
К-Конкатенация
echo "abcd_".$i."_".$j;


Б-Безопасность
$res=mysql_query("INSERT INTO `Employes` (`adress`) VALUES ('".mysql_real_escape_string($adress[0][0])."'");


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.