【问题标题】:MySql Select Where or Where not... while many other "Ands" and "Ors"MySql 选择 Where 或 Where not... 而许多其他“Ands”和“Ors”
【发布时间】:2011-10-07 08:57:20
【问题描述】:

我做错了什么?

我想选择仅限天主教的教堂,但它正在选择更多。是因为拉链吗?他们工作得很好。

$Zips = array(60618,60625,60647,60641,60613,60657,60640,60659,60614,60639,60622,60630,60660,60651,60642,60645,60712,60612,60646,60624,60610,60626,60674,60654,60661,60644,60634,60606,60607,60707,60302,60611,60202,60602,60601,60706,60303,60603,60604,60301,60701,60656,60076,60204,60209,60304,60077,60623,60608,60305,60203,60605,60631,60664,60668,60669,60670,60673,60675,60677,60678,60680,60681,60684,60685,60686,60687,60688,60690,60691,60693,60694,60696,60697,60699,60689,60695,60171,60201,60682,60208,60053,60804,60714,60616,60130,60161,60153,60176,60068,60160,60029,60141,60091,60402,60632,60131,60290,60165,60609,60043,60164,60546);
$ZipCount = count($Zips);

for ($i = 0; $ZipCount > $i; $i++) {
    if ($i == 0) {
        $TheZips = "Zip LIKE '%$Zips[$i]%'";
    }
    else {
        $TheZips .= "OR Zip LIKE '%$Zips[$i]%'";
    }
}

$sql = mysql_query("SELECT DISTINCT * FROM info WHERE Catholic and '%true%' OR $TheZips");
$result = mysql_num_rows($sql);

【问题讨论】:

    标签: php sql select where


    【解决方案1】:
    $str_zips = implode(', ', $Zips);
    
    $sql = 
    mysql_query("SELECT DISTINCT * FROM info WHERE Catholic=true AND Zip IN ({$str_zips})");
    

    【讨论】:

      【解决方案2】:

      恕我直言,您应该使用:

      for($i=0;$ZipCount>$i;$i++)
      {
        if($i==0){  $TheZips= "Zip = '$Zips[$i]'"; }
        else {  $TheZips.= "OR Zip = '$Zips[$i]'";} 
      }    
      
      $sql = mysql_query(
        "SELECT DISTINCT * FROM info WHERE Catholic=true AND ($TheZips)");
      

      for($i=0;$ZipCount>$i;$i++)
      {
        if($i==0){  $TheZips= "$Zips[$i]"; }
        else {  $TheZips.= ",$Zips[$i]";} 
      }    
      
      $sql = mysql_query(
        "SELECT DISTINCT * FROM info WHERE Catholic=true AND Zip IN ($TheZips)");
      

      【讨论】:

      • 使用 implode() 代替 for 循环。
      • @Robin Castlin:是的,你是对的,但我不想复制你的好答案(为你 +1):)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2011-05-12
      相关资源
      最近更新 更多