将此数据库查询转换为php PDO

时间:2014-10-27 16:25:08

标签: php mysql 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"; 
}

2 个答案:

答案 0 :(得分:1)

我会这样写:

// 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);

答案 1 :(得分:0)

你的一个例子

$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();