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
Форумы портала PHP.SU :: Версия для печати :: foreach в середине запроса
Форумы портала PHP.SU » » Вопросы новичков » foreach в середине запроса

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

1. Exponat - 15 Сентября, 2015 - 17:25:19 - перейти к сообщению
Есть такой код:
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 нормально в запросе вставить?
2. andrewkard - 15 Сентября, 2015 - 17:48:28 - перейти к сообщению
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.  
3. Exponat - 16 Сентября, 2015 - 02:39:59 - перейти к сообщению
Если массив $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) . "')";
4. Viper - 16 Сентября, 2015 - 09:35:05 - перейти к сообщению
Exponat пишет:
Судя по всему это связано с тем что в синтаксисе если записываются текстовые данные их нужно оборачивать в кавычки.
в INSERT и UPDATE значения для VALUES и SET, соответственно, должны браться в одинарные кавычки, т.к. это строковые значения.
5. Panoptik - 16 Сентября, 2015 - 11:48:54 - перейти к сообщению
а если в какой-то из строк будет кавычка как думаете что случится?
6. Viper - 16 Сентября, 2015 - 14:00:11 - перейти к сообщению
Panoptik мы не говорим про экранирование!

 

Powered by ExBB FM 1.0 RC1