2016-10-25 33 views
0

我有這個PHP代碼mysql命令通過RAND()一行

$coma_count=substr_count($Hob,','); 
     if ($coma_count==0) { 
      $query="SELECT * FROM user_opt WHERE Interests='$Hob' LIMIT 80"; 
     }else{ 
      $expl=explode(',',$Hob); 
      for ($i=0; $i <=$coma_count; $i++) { 
        $query.=" UNION SELECT * FROM users WHERE Interests LIKE '%{$expl[$i]}%'";  
      } 
} 
    $sql=$con->query($query." ORDER BY RAND()") or die($con->error); 

$coma_count數從0到112,問題是,當$coma_count爲0(意味着只有被選中的國家)我的查詢會看起來像這樣SELECT * FROM user_opt WHERE Country='$Countr' LIMIT 80 ORDER BY RAND()哪些不被SQL接受,我該怎麼辦?

+0

變化的代碼,以確保該查詢** **是通過SQL接受?我不確定我是否明白這個問題。問題在哪裏...... – Dekel

+0

如果問題是「什麼是正確的語法」 - 答案是「ORDER BY RAND()LIMIT 80」(而不是相反)。現在您需要按照創建正確查詢的方式編寫代碼。 – Dekel

回答

1

創建$limit變量,設置它如果需要的話,那麼它追:

$limit = ''; 
$coma_count=substr_count($Hob,','); 
    if ($coma_count==0) { 
     $query="SELECT * FROM user_opt WHERE Interests='$Hob'"; 
     $limit = " LIMIT 80"; 
    }else{ 
     $expl=explode(',',$Hob); 
     for ($i=0; $i <=$coma_count; $i++) { 
       $query.=" UNION SELECT * FROM users WHERE Interests LIKE '%{$expl[$i]}%'";  
     } 
} 
$sql=$con->query($query." ORDER BY RAND()".$limit) or die($con->error); 
+0

謝謝!但是,那麼問題是什麼? –

+0

LIMIT必須在SELECT語句中的ORDER BY之後。 – aynber