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 :: Undefined variable: Проблема!

 PHP.SU

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


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

> Без описания
Alex_dark74
Отправлено: 09 Октября, 2014 - 21:36:19
Post Id


Частый гость


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


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




Допустим в переменной есть массив
Array ( [group] => Самоклейка [name] => Jac [coating] => Матовая [density] => 120 [thickness] => 200 )

Готовлю динамический запрос для добавления записи в БД
PHP:
скопировать код в буфер обмена
  1. foreach ($parametr as $k => $v){
  2.       if (!$value){$value = $value."'".$v."'";}else {$value = $value.","."'".$v."'";}
  3.       if (!$key){$key = $key."`".$k."`";}else {$key = $key.","."`".$k."`";}
  4.     }

Выдает.
делаем Print_r (value); = `group`,`name`,`coating`,`density`,`thickness`
делаем Print_r (value); = 'Самоклейка','Jac','Матовая','120','200'
Выдает ошибку:
Notice: Undefined variable: value in /data/www/psp/mat/mod/material.p hp on line 33
Notice: Undefined variable: value in /data/www/psp/mat/mod/material.p hp on line 33
Notice: Undefined variable: key in /data/www/psp/mat/mod/material.p hp on line 34
Notice: Undefined variable: key in /data/www/psp/mat/mod/material.p hp on line 34

Самое интересное, что добавление в базу происходит, но ошибку выдает.
 
 Top
dcc0
Отправлено: 09 Октября, 2014 - 21:45:06
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




С какой-то там версии php надо явно объявлять переменные. Где они у вас объявлены?
И почему не должен добавлять в базу? Ошибки нет.
Notice != error

(Отредактировано автором: 09 Октября, 2014 - 21:48:22)



-----
Март 2021. Бросил программирование
 
 Top
DelphinPRO
Отправлено: 09 Октября, 2014 - 21:55:50
Post Id



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


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


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




вам нужно соединить ключи и значения в строки?

PHP:
скопировать код в буфер обмена
  1. $keys = "`".join("`,`", array_keys($parameters))."`";
  2. $values = "'".join("','", $parameters)."'";

(Отредактировано автором: 09 Октября, 2014 - 21:56:51)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 09 Октября, 2014 - 22:55:36
Post Id


Участник


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


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




А чего вы ожидали? Изначально при if (!$value) переменной $value нет, поэтому и получаете notice. Далее вы попадете в этот самый if, потому что условие истинно, этой переменной присваивается некое значение, которое успешно заносится в БД.
Если хотите избежать notice, используйте isset().
 
 Top
dcc0
Отправлено: 09 Октября, 2014 - 23:03:44
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




teddy тогда и условие не имеет смысла


-----
Март 2021. Бросил программирование
 
 Top
teddy
Отправлено: 09 Октября, 2014 - 23:06:33
Post Id


Участник


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


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




dcc0
Хм... насчет условия не знаю, в код не вникал, может там и есть что то не логичное.
Но факт в том что перед тем как использовать не существующую переменную, во избежании notice, надо бы применить isset().
 
 Top
Sail
Отправлено: 10 Октября, 2014 - 10:03:58
Post Id



Участник


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


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




Резюмирую Улыбка
Alex_dark74, обратите внимание на решение, предложенное DelphinPRO.
Что для Вашего варианта, то, как справедливо заметили dcc0 и teddy, перед циклом достаточно инициализировать две переменные:

(Отредактировано автором: 10 Октября, 2014 - 10:04:42)

 
 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