مشکل با این کوئری mysql

sanecity

Member
سلام
اینو ببینید
PHP:
$query = "select * from table WHERE art_show = 'on' AND art_name  like '%$search%'  or art_text  like '%$search%'   or art_keyword  like '%$search%'  or art_detile  like '%$search%'  order by art_date DESC";
من میخوام تو جستجو مقالاتی که art_show اونها برابر on باشه رو بگرده و نتیجه رو نشون بده
وقتی چیزی جستجو میکنی درسته اما مشکل اینجاست که اگه یه اسمی جستجو کنی که art_show اونها برابر off هم باشه تو جستجو میاد

حالا من چطوری به این mysql بفهمونم که بابا اونهایی که on نیست رو نشون نده ؟!! :green:
 

Masoud1365

مدیر انجمن
چون OR استفاده کردی باید 2 تا کوئری بنویسی ! نکته همین جاست که به همین روش بعضی سایت ها اینجکت میشن دیگه ! آخر کوئری میزنن 1=1 OR جواب اوکی میشه و همه رو بر میگردونه !
یه کوئری با and بنویس یکی با OR یا subquery بنویس یا با پرانتز جدا کن ! به هر حال از and و or دوتا باهم اینجوری نمیتونی استفاده کنی چون اگه یکی از شرطها هم درست باشه و مقدار off باشه بازم نشونن میده !
 

ziXet

مدیر انجمن PHP/MYSQL
سلام
اینو ببینید
PHP:
$query = "select * from table WHERE art_show = 'on' AND art_name  like '%$search%'  or art_text  like '%$search%'   or art_keyword  like '%$search%'  or art_detile  like '%$search%'  order by art_date DESC";
من میخوام تو جستجو مقالاتی که art_show اونها برابر on باشه رو بگرده و نتیجه رو نشون بده
وقتی چیزی جستجو میکنی درسته اما مشکل اینجاست که اگه یه اسمی جستجو کنی که art_show اونها برابر off هم باشه تو جستجو میاد

حالا من چطوری به این mysql بفهمونم که بابا اونهایی که on نیست رو نشون نده ؟!! :green:
باید شرط ها رو با پرانتز درست کنی!
کد درست:
PHP:
$query = "select * from table WHERE art_show = 'on' AND (art_name  like '%$search%'  or art_text  like '%$search%'   or art_keyword  like '%$search%'  or art_detile  like '%$search%')  order by art_date DESC"
 

sanecity

Member
با تشکر از شما اساتید گرامی ، مشکل حل شد :rose:
از پرانتز استفاده کردم
ببخشید یه چیز دیگه ربطی به این نداره
تو Mysql تابعی داریم که زمان اجرای دستور Mysql رو برگردونه؟ گشتم چیزی پیدا نکردم
یه چیزی مثل mysql_affected_rows
 

ziXet

مدیر انجمن PHP/MYSQL
با تشکر از شما اساتید گرامی ، مشکل حل شد :rose:
از پرانتز استفاده کردم
ببخشید یه چیز دیگه ربطی به این نداره
تو Mysql تابعی داریم که زمان اجرای دستور Mysql رو برگردونه؟ گشتم چیزی پیدا نکردم
یه چیزی مثل mysql_affected_rows
فکر نکنم همچین تابعی تو خود mysql پیاده سازی شده باشه!
ولی شما میتونید با ساختن یه تایمر در php این کارو انجام بدین!
http://www.google.co.uk/search?q=php+timer
موفق باشید
 

funpatogh.com

New Member
از php استفاده کن
PHP:
<?php
  $start=microtime(true);
  $query=mysql_query($sq);
  $end=microtime(true);
  echo number_format($end-$start,2).'Seq';
?>
 

جدیدترین ارسال ها

بالا