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

Форум MySQL

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

 

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

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

тема: В запрос к базе WHERE добавить не одно условие
 
 автор: AlexDIXI   (20.04.2008 в 01:44)   письмо автору
 
 

Мы все прекрасно знаем что при помощи WHERE можно уточнить в какой именно ячейке. Как мне добавить не одно условие а несколько. Например WHERE id=1 и name=Alex . Пробовал после запятой вставить еще одно уточнение и без запятой. Не получается =( помогите решить эту задачу.

С уважением!

   
 
 автор: sim5   (20.04.2008 в 01:50)   письмо автору
 
   для: AlexDIXI   (20.04.2008 в 01:44)
 

Связывайте уcловия логикой, которая вам требуется - AND, OR ...

   
 
 автор: Zilog   (20.04.2008 в 01:58)   письмо автору
 
   для: AlexDIXI   (20.04.2008 в 01:44)
 

да, и запятую в этом случае ставить ненадо
"... where a=b or a=c"

   
 
 автор: AlexDIXI   (20.04.2008 в 02:26)   письмо автору
 
   для: Zilog   (20.04.2008 в 01:58)
 

Мне 'or' не подходит. Так как те и те условия должны совподать.

Не работает мой код

$result = mysql_query ("UPDATE user SET status='OFF' WHERE status=on and date < now()",$db);

if($result == true)
{
echo "Изменения выполнены";

}
else
{
echo "Изменений нет! ";
echo mysql_error();
}



В данном случаи, ответ приходит Изменений нет! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on AND date < now()' at line 1

   
 
 автор: btrfly   (20.04.2008 в 02:36)   письмо автору
 
   для: AlexDIXI   (20.04.2008 в 02:26)
 

кавычки забыли
status='OFF'
и тут же пишите
status=on

зы.вы разделом ошиблись)

   
 
 автор: AlexDIXI   (20.04.2008 в 02:52)   письмо автору
 
   для: btrfly   (20.04.2008 в 02:36)
 

Все верно :)

Мне выше сказали кавычки не нужно ставить. Я их и не поставил.

А насчет разделов, я их правильно указал.
Моя логика звучит так. Выполнять изменения где (WHERE) в поле статус стоит запись on (status=on) и (AND) дата меньше сегодняшней (date < now()) И если эти условия совпадают изменить (UPDATE) в поле статус, OFF (status='OFF').

Но когда я ему пишу "... WHERE status=on AND date < now()" он выводит ошибку. Я для on ставил кавычки ошибка также..

   
 
 автор: btrfly   (20.04.2008 в 02:54)   письмо автору
 
   для: AlexDIXI   (20.04.2008 в 02:52)
 

Раздел в том плане,что
это Форум РНР,а вам надо в MySql
и вам сказали не ставить запятые,а не кавычки))

   
 
 автор: AlexDIXI   (20.04.2008 в 02:59)   письмо автору
 
   для: btrfly   (20.04.2008 в 02:36)
 

Мистика какаята:

Задал UPDATE'у условия где id='16' Он всеровно вывел true.
Вопрос, почему выводим true, если в таблице user id=16 не существует? Кому он успешно сделал UPDATE :)?

Вот код:

require_once ('config.php');

$result = mysql_query ("UPDATE user SET status='OFF' WHERE id='16'",$db);

if($result == true)
{
echo "Изменения выполнены";
echo mysql_error();

}
else
{
echo "Изменений нет! ";
echo mysql_error();
}

   
 
 автор: denok   (20.04.2008 в 03:14)   письмо автору
 
   для: AlexDIXI   (20.04.2008 в 02:59)
 

никому. UPDATE'у глубоко до лампочки, сущ-т указанная запись или нет. поэтому mysql_query() вернула true

   
 
 автор: AlexDIXI   (20.04.2008 в 03:24)   письмо автору
 
   для: denok   (20.04.2008 в 03:14)
 

>никому. UPDATE'у глубоко до лампочки, сущ-т указанная запись или нет. поэтому mysql_query() вернула true

Не подскажете каким атрибутом уточнить, If'у условия. Выполнено замена или нет.. ?

   
 
 автор: denok   (20.04.2008 в 03:38)   письмо автору
 
   для: AlexDIXI   (20.04.2008 в 03:24)
 

тут надо mysql_affected_rows() использовать. она вернет кол-во строк, измененных запросом.
что-нить типа этого:

require_once ('config.php'); 

$result = mysql_query ("UPDATE user SET status='OFF' WHERE id='16'",$db); 

if( mysql_affected_rows( $db ) > 0 )  { 
      echo "Изменения выполнены"; 

else { 
      echo "Изменений нет! "; 
}

   
 
 автор: AlexDIXI   (20.04.2008 в 03:58)   письмо автору
 
   для: denok   (20.04.2008 в 03:38)
 

Спасибо!

Зашел в справочник чтоб посмотреть подробнее о mysql_affected_rows. И в примечаниях прочитал следующее "При использовании UPDATE, MySQL не обновит столбцы, где новое значение - такое же, как и старое." А я же этот топик создал, чтоб не нагружать базу, уточнять какие именно изменения мне необходимы :).
В общем тема закрыта спасибо ВСЕМ!

С уважением...

   
Rambler's Top100
вверх

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