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 :: foreach в середине запроса

 PHP.SU

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


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

> Без описания
Exponat
Отправлено: 15 Сентября, 2015 - 17:25:19
Post Id



Частый гость


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


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




Есть такой код:
PHP:
скопировать код в буфер обмена
  1. INSERT INTO `mistexpress_city` (`NAME`, `STREET`, `HOUSE`, `LIMITWEIGHT`) VALUES <br/>
  2. <?foreach($t as $item){?>
  3. ('<?=$item->CityDescriptionRU?>','<?=$item->StreetDescriptionRU?>','<?=$item->House?>','<?=$item->Limitweight?>')<?if($item === end($t)){echo ';';} else {echo',';}?><br/>
  4. <?}?>

Он просто выводит на странице текстовую информацию.
А как мне это все преобразовать в php команду?
Я пробовал так:
PHP:
скопировать код в буфер обмена
  1. <?mysql_query("INSERT INTO `mistexpress_city` (`NAME`, `STREET`, `HOUSE`, `LIMITWEIGHT`) VALUES
  2. '".foreach($t as $item){."'
  3. (''".<?=$item->CityDescriptionRU?>."'',''".<?=$item->StreetDescriptionRU?>."'',''".<?=$item->House?>."'',''".<?=$item->Limitweight?>."'')'".<?if($item === end($t)){echo ';';} else {echo',';}."'"?>
  4. <?}?>

Но пишет ошибку: Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in

Какой синтаксис правильный? Как мне этот foreach нормально в запросе вставить?
 
 Top
andrewkard
Отправлено: 15 Сентября, 2015 - 17:48:28
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




Exponat
Как то так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $t = array(1,2,3,4);
  3. $query = 'INSERT INTO `mistexpress_city` (`NAME`, `STREET`, `HOUSE`, `LIMITWEIGHT`) VALUES (';
  4. $query.= join(', ', $t).')';
  5. mysql_query($query);
  6.  
 
 Top
Exponat
Отправлено: 16 Сентября, 2015 - 02:39:59
Post Id



Частый гость


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


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




Если массив $t содержит только int данные то в базу идет запись. Но если хоть один элемент массива будет типа string - в базу ничего не записывается и ошибка 1054: Unknown column 'hg' in 'field list'. Пример:
PHP:
скопировать код в буфер обмена
  1. array(4) {
  2.   [0]=>
  3.   string(2) "hg"
  4.   [1]=>
  5.   int(2)
  6.   [2]=>
  7.   int(3)
  8.   [3]=>
  9.   int(4)
  10. }
  11.  
  12. 1054: Unknown column 'hg' in 'field list'

(Добавление)
Судя по всему это связано с тем что в синтаксисе если записываются текстовые данные их нужно оборачивать в кавычки. У нас массив передает данные без кавычек.
(Добавление)
Получилось так:
PHP:
скопировать код в буфер обмена
  1. $s = array((string) $item->CityDescriptionRU, (string)$item->StreetDescriptionRU, (string)$item->House, (string)$item->Limitweight);
  2. $query = "INSERT INTO `mistexpress_city` (`NAME`, `STREET`, `HOUSE`, `LIMITWEIGHT`) VALUES ('" . implode("', '", $s) . "')";

(Отредактировано автором: 16 Сентября, 2015 - 03:30:57)

 
 Top
Viper
Отправлено: 16 Сентября, 2015 - 09:35:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Exponat пишет:
Судя по всему это связано с тем что в синтаксисе если записываются текстовые данные их нужно оборачивать в кавычки.
в INSERT и UPDATE значения для VALUES и SET, соответственно, должны браться в одинарные кавычки, т.к. это строковые значения.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Panoptik
Отправлено: 16 Сентября, 2015 - 11:48:54
Post Id



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


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


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




а если в какой-то из строк будет кавычка как думаете что случится?


-----
Just do it
 
 Top
Viper
Отправлено: 16 Сентября, 2015 - 14:00:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Panoptik мы не говорим про экранирование!


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 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