繁体   English   中英

查询帮助(SQL和PHP)

[英]Query help (Sql and PHP)

我有以下查询:

$lsel_lijst = mysql_query("SELECT * FROM users WHERE (owner = $id AND extern = 0 ) OR ( extern = $id )");

这给了我一个完整的用户列表,其中owner = $ id或extern = $ id。 查询后,我想从此列表中指定很多组。 级别= 10,级别= 20,级别= 30直到2000年。
并将它们放在右div框(框10,框20,框30等)中。

代替这样做:

$lsel_lijst = mysql_query("SELECT * FROM users WHERE level = 10 AND (owner = $id AND extern = 0 ) OR ( extern = $id )");
$lsel_lijst = mysql_query("SELECT * FROM users WHERE level = 20 AND (owner = $id AND extern = 0 ) OR ( extern = $id )");
$lsel_lijst = mysql_query("SELECT * FROM users WHERE level = 30 AND (owner = $id AND extern = 0 ) OR ( extern = $id )");

等等。我的问题是,我可以像上面一样再查询一次,然后选择吗?

使用“ in”子句:

$lsel_lijst = mysql_query("SELECT * FROM users WHERE level in(10,20,30) AND (owner = $id AND extern = 0 ) OR ( extern = $id )");
$lsel_lijst = mysql_query("SELECT * FROM users WHERE (level > 9 OR level < 31)  AND (owner = $id AND extern = 0 ) OR ( extern = $id )");

您可以尝试使用

$levels = array(10,20,30,40,50,60); //and goes one
$lsel_lijst = mysql_query("SELECT * FROM users WHERE level IN (".implode(',', $levels).") AND (owner = $id AND extern = 0 ) OR ( extern = $id )")

每个SQL查询必须满足65,536 *网络数据包大小(大约250MB)的批处理大小限制。 有关最大查询大小的更多信息,您将在这里找到WHERE col IN(...)条件的限制

像在第一个中一样选择所有内容,然后使用级别参数创建div。

if ($lsel_lijst) {
  while($row = mysql_fetch_array($lsel_lijst)) {
     <!-- write your div code here <div className="divLevelnumber" -->
  }

}
else {
  echo mysql_error();
}
while ($row = mysql_fetch_assoc($lsel_lijst))
    $list[$row['level']][] = $row;

这样,您将获得一个数组($ list),其中将包含许多子数组,这些子数组由其级别标识:

$list = array(
    1 => array(level1 entries...),
    2 => array(level2 entries...)
);

注意,如果有一个空组(例如,没有级别1),则$ list数组的值将位于索引1的空值($ list [1] = null)

并且,停止使用“ mysql”功能集,而是(如果可能)使用mysqli或PDO。 使用不推荐使用的扩展很不好,真的很糟糕。

编辑:看着你的评论

是的,我已经使用循环了,但是这太慢了,网站滞后于100多个在线用户。

提醒关系数据库将始终返回“表”(结果集)作为结果。 没有实用的方法使它返回数组或其他结构。 这就是为什么存在提取函数的原因,它们会以语言结构(如数组:mysql_fetch_array(),mysql_fetch_assoc()或作为对象mysql_fetch_object())转换结果(结果集,行)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM