代码之家  ›  专栏  ›  技术社区  ›  Your Common Sense

使用PDO的fetchAll助手函数

  •  -9
  • Your Common Sense  · 技术社区  · 14 年前

    function fetchAll(){
      $args = func_get_args();
      $query = array_shift($args);
      $query = str_replace("%s","'%s'",$query);
      foreach ($args as $key => $val) {
        $args[$key] = mysql_real_escape_string($val);
      }
      $query = vsprintf($query, $args);
      if (!$query) return FALSE;
    
      $res = mysql_query($query);
      if (!$res) {
        trigger_error("db: ".mysql_error()." in ".$query);
        return FALSE;
      }
      $a = array();
      while($row = mysql_fetch_assoc($res)) $a[]=$row;
      return $a;
    }
    

    然后像这样使用

    $a=$db->fetchAll("SELECT * FROM users WHERE status=%s LIMIT %d,%d",$status,$start,$num);
    

    如何使用PDO重写它?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Wrikken    14 年前

    编辑: 正如上校所说,显然这(不再是?)使用 LIMIT 条款。


    如果您使用的是简单查询/不太在意类型:

    function fetchAll(){
       $args = func_get_args();
       $query = array_shift($args);//'SELECT * FROM users WHERE status=? LIMIT ?,?'
       //you'll need a reference to your PDO instance $pdo somewhere....
       $stmt = $pdo->prepare($query);
       $stmt->execute($args);
       return $stmt->fetchAll();
    }
    
        2
  •  0
  •   Dan Soap    14 年前

    我能找到的每一个例子都只说明 如何直接绑定参数。 它的价值?或者一直打这个电话4 第3行绑定并执行?

    # the data we want to insert  
    $data = array('Cathy', '9 Dark and Twisty Road', 'Cardiff');  
    
    $STH = $DBH->("INSERT INTO folks (name, addr, city) values (?, ?, ?)");  
    $STH->execute($data);