将此DB查询转换为php-PDO


Converting this DB Queries to php PDO

需要帮助在PDO 中获得这两个查询

PHP代码:

if($who!="") 
{ 
$sql = "SELECT id, title, itemurl FROM iwbf_vault WHERE uid='".$who."' ORDER BY pudt DESC LIMIT $limit_start, $items_per_page"; 
}else{ 
$sql = "SELECT id, title, itemurl, uid FROM iwbf_vault ORDER BY pudt DESC LIMIT $limit_start, $items_per_page"; 
}

我会这样写:

// you may have set this earlier
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$values = array();
$sql = "SELECT id, title, itemurl FROM iwbf_vault WHERE true";
if ($who) {
    $sql .= " AND uid = ?";
    $values[] = $who;
}
$sql .= " ORDER BY pudt DESC LIMIT ?, ?";
$values[] = $limit_start;
$values[] = $items_per_page;
$stmt = $pdo->prepare($sql);
$stmt->execute($values);

示例

$dbh = new PDO('mysql:host=localhost;dbname=my_db', $user, $pass);
$where = '';
if($who) $where .= " WHERE uid = ':who' ";
$sth = $dbh->prepare('SELECT id, title, itemurl FROM iwbf_vault '.$where.' ORDER BY pudt DESC LIMIT :limit_start, :items_per_page');
if($who) $sth->bindValue(':who', $who);
$sth->bindValue(':limit_start', $limit_start);
$sth->bindValue(':items_per_page', $items_per_page);
$sth->execute();
$result = $sth->fetchAll();