纳速健身

标题: discuz x中 fetch_all函数求解释,该怎么处理 [打印本页]

作者: awagink    时间: 2021-2-20 18:05
标题: discuz x中 fetch_all函数求解释,该怎么处理
discuz x2.5中 fetch_all函数求解释
  1. public static function fetch_all($sql, $arg = array(), $keyfield = '', $silent=false) {

  2. $data = array();
  3. $query = self::query($sql, $arg, $silent, false);
  4. while ($row = self::$db->fetch_array($query)) {
  5. if ($keyfield && isset($row[$keyfield])) {
  6. $data[$row[$keyfield]] = $row;
  7. } else {
  8. $data[] = $row;
  9. }
  10. }
  11. self::$db->free_result($query);
  12. return $data;
  13. }
复制代码


请大侠解释下这个函数,最好每句代码与函数参数代表的意思都解释下。谢谢啊!
------解决思路----------------------


  1. /*
  2. *        $sql        要执行的sql语句
  3. *        $arg        sql中要用到的参数(数组)
  4. *        $keyfield        返回数组中的键名(若有)
  5. *        $silent        已以哪种方式查询(默认是mysql_query,还有mysql_unbuffered_query)
  6. */
  7. public static function fetch_all($sql, $arg = array(), $keyfield = '', $silent=false) {

  8. $data = array();
  9. $query = self::query($sql, $arg, $silent, false);//执行查询
  10. while ($row = self::$db->fetch_array($query)) {
  11. //将查询的资源放到$data数组中,若$keyfield有值,则将$keyfield作为$data的key值
  12. if ($keyfield && isset($row[$keyfield])) {
  13. $data[$row[$keyfield]] = $row;
  14. } else {
  15. $data[] = $row;
  16. }
  17. }
  18. self::$db->free_result($query);//释放资源
  19. return $data;//二维数组
  20. }
复制代码


一个例子

  1. //查询uid为1的用户的所有信息
  2. $res=DB::fetch_all("SELECT * FROM %t WHERE uid=%d",array('common_member',1));
复制代码





欢迎光临 纳速健身 (https://www.nasue.com/) Powered by Discuz! X3.4