Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Непонятное поведение insert into
deeper  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 42303
На форуме: 11 месяцев, 17 дней
Карма:




Коллеги, добрый день. Есть 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);


В чём может быть подвох?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


а чё гадать то.

чё кажет ?

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


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 26 дней
Карма: 2




$res=mysql_query("INSERT INTO `Employes` (`adress`)
VALUES ('
{$adress[0][0]}')");


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
deeper  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 42303
На форуме: 11 месяцев, 17 дней
Карма:




Цитата (Игорь_Vasinsky @ 28.03.2016 - 12:16)
а чё гадать то.

чё кажет ?

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

Вар дамп показывает корректный результат.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
deeper  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 42303
На форуме: 11 месяцев, 17 дней
Карма:




Цитата (DragonNoir @ 28.03.2016 - 12:18)
$res=mysql_query("INSERT INTO `Employes` (`adress`)
VALUES ('
{$adress[0][0]}')");

Спасибо, помогло! А почему вариант без {} не работал?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 26 дней
Карма: 2




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


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


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14980
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 5 дней
Карма: 444




deeper, подобные же грабли получишь, если попытаешься сформировать строку вида abcd_1_2, используя переменные
$i=1;
$j=2;
echo "abcd_$i_$j";

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

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


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

Это сообщение отредактировал sergeiss - 28.03.2016 - 13:43


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

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

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

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
deeper  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 42303
На форуме: 11 месяцев, 17 дней
Карма:




Цитата (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
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


К-Конкатенация
echo "abcd_".$i."_".$j;


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


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса