Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Динамический запрос к БД
 
 автор: Mookapek   (09.11.2009 в 00:48)   письмо автору
 
 

Запрос в таком виде:
UPDATE users SET login = 'admin', pass = '12345', email = 'mail@server.com' WHERE id = '1';

Скрипту, который составляет запрос к БД, данные пользователя присылаются из формы методом post. Но вот только пользователь может изменить не все данные, и как в таком случае в скрипте составлять такой запрос к БД?

  Ответить  
 
 автор: Fractured#   (09.11.2009 в 00:55)   письмо автору
 
   для: Mookapek   (09.11.2009 в 00:48)
 

Бля, пиздец :)))))

  Ответить  
 
 автор: Trianon   (09.11.2009 в 01:28)   письмо автору
 
   для: Mookapek   (09.11.2009 в 00:48)
 

В запросе UPDATE вовсе необязательно перечислять все поля таблицы, если Вы об этом.

  Ответить  
 
 автор: Mookapek   (09.11.2009 в 02:01)   письмо автору
 
   для: Trianon   (09.11.2009 в 01:28)
 

Нет, я не о том.
Если пользователь изменил только email, то запрос будет уже таким:
UPDATE users SET email = '$_POST[email]' WHERE id = '1';

Это ясно. Не ясно как в скрипте это реализовать. Делать кучу проверок и такую же кучу вариантов запроса? То есть, если изменен только логин, запрос, такой такой-то, если логин и пароль - то запрос уже другой вид примет и так далее. Сами понимаете, некрасиво и нерационально получится.

  Ответить  
 
 автор: Trianon   (09.11.2009 в 02:10)   письмо автору
 
   для: Mookapek   (09.11.2009 в 02:01)
 

Составлять строку запроса из отдельных кусочков.
В конце концов SQL-запрос - это обычный текст, пока его серверу не отправят.
Вот и работайте с ним, как с текстом.

  Ответить  
 
 автор: Mookapek   (09.11.2009 в 02:34)   письмо автору
 
   для: Trianon   (09.11.2009 в 02:10)
 

Если работать с кусочками, то встает проблема с разделительными запятыми. Опять таки придется прибегать к многочисленным проверкам. Как сделать всё правильно и красиво?

  Ответить  
 
 автор: Trianon   (09.11.2009 в 02:42)   письмо автору
 
   для: Mookapek   (09.11.2009 в 02:34)
 

нет там проблемы с запятыми.
<?
$flds 
= array('email''icq''nickname');
foreach(
$flds as $fld)
  if(!empty(
$_POST[$fld]))
    
$list[] = "`$fld` = '" mysql_real_escape_string(trim($_POST[$_POST[$fld]))."' ";
$sql "UPDATE `users` SET "implode(', '$list) . " WHERE `id` = ".intval($login_id);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования