2016-10-25 35 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