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

 PHP.SU

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


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

> Описание: UPDATE
Alex_dark74
Отправлено: 18 Июня, 2015 - 11:32:53
Post Id


Частый гость


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


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




Есть класс:
PHP:
скопировать код в буфер обмена
  1. public function msql_update($table,$parametrs,$where){
  2.     $this->msql_connect();
  3.     $query = "UPDATE ";
  4.     $query = $query." `".$table."` SET ";
  5.    
  6.     foreach ($parametrs as $k=>$v){
  7.       //print_r($is_value); echo "<br />";
  8.       if(isset($value) == true){
  9.         $value = $value.",`$k`='".$v."'";
  10.       }
  11.       else{
  12.         $value = $value."`$k`="."'".$v."'";
  13. }
  14.  
  15.     }
  16.     $query = $query.$value." WHERE $where";
  17.    
  18.     $result = mysql_query($query);
  19.     if (!$result)die(mysql_error());
  20.   }

В нем создается динамический запрос для обновления строки
$table = Имя таблицы
$parametrs = Массив в виде [key] = value
$where = id строки

Выдает ошибку в строке
else{
$value = $value."`$k`="."'".$v."'";
}
говорит "Undefined variable: value in ..."
Подскажите как лучше сделать динамический запрос
 
 Top
Tyoma5891
Отправлено: 18 Июня, 2015 - 11:46:27
Post Id


Частый посетитель


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


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




эмм а откуда переменная $value сама берется или где задается то?
 
 Top
Alex_dark74
Отправлено: 18 Июня, 2015 - 13:30:29
Post Id


Частый гость


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


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




Проверяю "isset($value) == true" Ну если ее нет
то созаю и помещаю. в нее информацию.
$value = $value."`$k`="."'".$v."'";
 
 Top
Sail
Отправлено: 18 Июня, 2015 - 13:33:48
Post Id



Участник


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


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




Alex_dark74, определите её значение до цикла, в котором она дополняется собственным содержимым...
(Добавление)
Или в альтернативной ветке подредактируйте оператор.
 
 Top
Alex_dark74
Отправлено: 18 Июня, 2015 - 13:57:21
Post Id


Частый гость


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


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




Sail пишет:
Alex_dark74, определите её значение до цикла, в котором она дополняется собственным содержимым...
(Добавление)
Или в альтернативной ветке подредактируйте оператор.

В таком случае не будет проверка будет работать неправильно.
 
 Top
Sail
Отправлено: 18 Июня, 2015 - 14:08:22
Post Id



Участник


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


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




Alex_dark74 пишет:
Sail пишет:
Alex_dark74, определите её значение до цикла, в котором она дополняется собственным содержимым...
(Добавление)
Или в альтернативной ветке подредактируйте оператор.

В таком случае не будет проверка будет работать неправильно.

В каком из двух? Улыбка
Кто мешает проверять другой признак?
 
 Top
Alex_dark74
Отправлено: 18 Июня, 2015 - 14:18:59
Post Id


Частый гость


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


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




Вышел из положения так:
PHP:
скопировать код в буфер обмена
  1. $value = '';
  2.     $val = false;
  3.     foreach ($parametrs as $k=>$v){
  4.       //print_r($is_value); echo "<br />";
  5.       if($val == true){
  6.         $value = $value.",`$k`='".$v."'";
  7.       }
  8.       else{
  9.         $val = true;
  10.         $value = $value."`$k`="."'".$v."'";
  11.       }
  12.     }

Наверное так правильней будет.
 
 Top
Sail
Отправлено: 18 Июня, 2015 - 15:07:51
Post Id



Участник


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


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




Alex_dark74, а можно и так:
PHP:
скопировать код в буфер обмена
  1. $value = implode(',', array_map(function($k, $v){ return "`{$k}`='{$v}'";}, array_keys($parametrs), $parametrs));
  2.  
 
 Top
exlant
Отправлено: 18 Июня, 2015 - 16:55:35
Post Id



Посетитель


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


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




Alex_dark74 а чего не так?

PHP:
скопировать код в буфер обмена
  1. $parametrs = array('string1','string2','string3');
  2. foreach ($parametrs as $k=>$v){
  3.       //print_r($is_value); echo "<br />";
  4.       if(!isset($outPut)){
  5.          $outPut = "`$k`="."'".$v."'";
  6.       }
  7.       else{
  8.         $outPut .= ",`$k`='".$v."'";
  9.       }
  10.     }
  11. echo $outPut;
 
 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