2014-06-09 62 views
-2

我是PDO的新手,我試圖執行查詢。帶參數的PDO查詢

$stmt = $dbh->prepare('SELECT * FROM tbmeseros WHERE alias_mesero=:alias AND res_mesero=:rest'); 

$stmt->execute(array(':alias'=>$alias, 
        ':rest'=>$rest)); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 

if(! $row) 
{ 
//to do when the query is empty 
} 
else if ($row) 
{ 
//to do when the query is not empty 
} 

查詢已執行,但條件未滿足。

我需要的是,當沒有結果的查詢,下一步必須/ /當查詢是空的。

但查詢是不是空的,但條件:

if(! $row) 
{ 
//to do when the query is empty 
} 

執行...

任何幫助是值得歡迎的。謝謝。

編輯問題

我改變了我的代碼,它現在正在工作。 這是我的新代碼:

$sql = 'SELECT alias_mesero 
    FROM tbmeseros 
    WHERE alias_mesero = :alias AND rest_mesero = :rest'; 

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$sth->execute(array(':alias'=> $alias, ':rest' =>$rest)); 

$red = $sth->fetchAll(); 
//echo count($red); 
if(count($red)==0) 
{ 
    //to do if query results are 0 
} 
else 
{ 
// to do if query results are >0 
} 
+2

你的問題不清楚。這是你的邏輯或查詢的問題嗎? – Ibu

+0

@Ibu,感謝您的評論。我正在使用實際值檢查查詢,並使用給定的值查詢結果應該是表中有符合條件的記錄。問題是執行的if條件是if(!$ row){...}可能是邏輯錯誤。 – rzimmerman

+1

獲取結果後,嘗試'var_dump($ row)'。 – hjpotter92

回答

0

這將是更快的檢索結果通過使用fetchall數組並對其執行count,看它是否是空的。你似乎假設一個空的結果集並不是假的。

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

if(count($rows)==0) { 
//to do when the query is empty 
} else { 
//to do when the query is not empty 
} 
+1

你快點在哪裏?爲什麼不先閱讀這個問題? –

+0

@ amenadiel,我找到了解決方案,請參閱我的更新問題。感謝您的時間和精力。 – rzimmerman

+0

@YourCommonSense,我的答案中有哪部分值得反對?看來使用'''''''''''''''''''''''終於得到了代碼工作。 ¿你認爲你不喜歡的答案意味着這個人沒有閱讀這個問題?一點都不好。 – amenadiel