вспомогательная функция fetchAll с использованием PDO - PullRequest
0 голосов
/ 16 сентября 2010

Предположим, у меня есть функция

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?
Каждый пример, который я могу найти, показывает только то, как напрямую связать параметры. Должен ли я передать тип переменной, а также ее значение? Или сделать этот вызов всегда 4 строки - 3 привязки и выполнить?

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

edit: , как указал полковник, очевидно, это (больше не?) Работает с 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();
}
0 голосов
/ 16 сентября 2010

Каждый пример, который я могу найти, показывает только как связать параметры напрямую. Должен ли я передать тип переменной, а также это ценность? Или звоните всегда 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); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...