0

这是我的代码片段:

$other_query = $this -> db -> query("SELECT EXISTS(SELECT 1 FROM shops WHERE cid=$cid AND zbid!=0 AND zbid!=$zbid)",__LINE__,__FILE__);
$this -> db -> output_vars["other_shops"] = $this -> db -> get_result($other_query); // 1 = there are other shops, 0 = no other shops
if($group["shop_create"] == 0){
    $my_shop = 3;
} else {            
    $my_shop_query = $this -> db -> query("SELECT EXISTS(SELECT 1 FROM shops WHERE cid=$cid AND zbid=$zbid LIMIT 1)",__LINE__,__FILE__);
    $my_shop = $this -> db -> get_result($my_shop_query) == 1 ? 1 : 2;
}

我想将这两个查询合二为一。这两个查询之间的唯一区别是,一个查询 where 的行,zbid!=0 AND zbid!=$zbid而另一个查询 where 的行zbid=$zbid。这里的另一个问题是if声明。此外,在这种情况下$group["shop_create"] == 0(即在这个初始代码中,只会运行一个查询),我不希望组合查询做任何额外的工作。

对于那些好奇的人,$this -> db -> get_result($query_resource)基本上返回相当于mysql_result($query_resource,0). 我从 切换mysql到时添加了此功能mysqli

我希望这是有道理的!

4

1 回答 1

0

为什么不这样做:“SELECT zbid FROM stores WHERE cid=$cid”?

然后你需要等效的 mysql_fetch_* 来循环结果。就我个人而言,我会将它们存储在一个数组中,然后再进行测试。

像这样的东西:

$res = $this -> db -> query("SELECT zbid FROM shops WHERE cid=$cid",__LINE__,__FILE__);
$arr = array();
while ( $row = mysql_fetch_row($res) ) {
  $arr[] = $row[0];
}
$arr = array_diff($arr, array(0));

$this -> db -> output_vars["other_shops"] = count(array_diff($arr, array($zbid)) > 0 ? 1 : 0;

if($group["shop_create"] == 0){
    $my_shop = 3;
} else {            
    $my_shop = in_array($zbid, $arr) ? 1 : 2;
}
于 2012-08-23T15:51:03.700 回答