2014-10-27 61 views
-2

需要幫助PDO得到這兩個查詢轉換這個數據庫查詢到PHP PDO

PHP代碼:

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

http://php.net/pdo我們不是代碼translati開/寫服務。 **您**寫下pdo腳手架,我們可能會嘗試幫助解決它。 – 2014-10-27 16:27:05

+2

然後瞭解PDO ......我們不做作業 – 2014-10-27 16:27:19

+1

「需要幫助才能在PDO中獲得這兩個查詢」......嗯,[***你有沒有嘗試過任何東西?***](http:// whathaveyoutried .com) – Barranka 2014-10-27 16:28:54

回答

1

我會這樣寫你

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

謝謝你回答比爾很高興看到不是每個人都在這裏只是爲了批評者對那些不瞭解的人 – 2014-10-27 16:38:37

+0

很高興能幫到@Ненад,是的,你是對的*有些*這裏的人似乎只關心拒絕的問題不到100%完美。但是這裏有更多的人希望提供答案。但不幸的是,前者發出令人沮喪的評論很容易。我們需要花費更多的時間和精力發佈有用的答案。因此,無益的評論與發佈他們的人的比例不成比例地增長。 :-) – 2014-10-27 16:41:59

+0

+1 @BillKarwin對於這樣的想法:) – MH2K9 2014-10-27 16:43:39

0

爲例:

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"; 
} 
+0

感謝回覆我喜歡真正想幫助的人 – 2014-10-27 16:46:10

+0

+1這是另一種有效的代碼編寫方式(雖然我會寫一個'if($ who) '對於兩個條件操作)。對於它的價值,數據類型(如bindParam()和bindValue()中的PDO :: PARAM_INT)通常被pdo_mysql驅動程序忽略。也許他們對其他品牌的RDBMS更重要。 – 2014-10-27 16:47:07

+0

很高興爲您效勞@Ненад。不用謝。 – MH2K9 2014-10-27 16:47:18