2013-03-10 30 views
-2

中的mysql_query如果查詢被這樣執行或者不執行,我們可以檢查:檢查,如果SQL查詢是excuted在PDO

$query = $yourdbconnection->fetch_array(mysql_query("SELECT * FROM tbl_name")); 
if ($query){ // query is working } 
else { // query is not working } 
在PDO

,我做這樣的事情:

$query = $yourdbconnection->query("SELECT * FROM tbl_name"); 
$fetchquery = $query->fetchAll(); 
if ($fetchquery) { // query is working} 
else { // query not working} 

我的代碼有效嗎? if聲明究竟在幹什麼?它是否與mysql_query在做同樣的事情?我如何檢查查詢是否返回0行?

[編輯]

我發現這些解決方案作爲一種解決方法,以使用$stmt->fetch()

製備($ SQL)的問題

  1. ; $ stmt-> execute();

    if ($data = $stmt->fetch()) { 
        do { 
         echo $data['model'] . '<br>'; 
        } while ($data = $stmt->fetch()); 
    } else { 
        echo 'Empty Query';} 
    
    ?>
  2. 增加另一個查詢來計算行數見this answer

不過,我仍然在尋找更好的解決方案

+0

http://www.php.net/manual/en/pdostatement.fetch.php – kjetilh 2013-03-10 18:05:53

回答

0

要查看您的查詢是否已執行,我建議將您的PDO設置爲異常模式,如您的常識建議。你可以這樣說:

$dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass'); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

關於最好的方式來檢查,如果查詢在PDO返回的值或沒有,我建議只是在做一個SELECT COUNT(*) FROM table查詢,例如:

<?php 
$query = $dbh->query('SELECT COUNT(*) FROM table'); 
if ($query->fetchColumn() != 0) { 
    /* Query has result(s) */ 
    $query = $dbh->query('SELECT * FROM table'); 
    /* ... */ 
} else { 
    /* Query has no results */ 
} 
?> 

讓我知道你是否有其他問題。

+0

[rowCount()](http://www.php.net/manual/en/pdostatement.rowcount。php)不是一種用SELECT查詢檢查結果數量的可移植方法。 – kjetilh 2013-03-10 18:31:29

+0

的確,我沒有注意到這一點。猜猜我學到了一些東西。然後我會建議做一個'SELECT COUNT(*)FROM table'查詢,然後在count> 0的時候執行你的普通查詢。我會更新我的答案。 – PLPeeters 2013-03-10 18:41:36

-1

有在您的帖子2個問題。

1)檢查PDO中查詢是否返回值的最佳方法是什麼?

檢查返回值

2)如何檢查作爲tag wiki

描述順便說一句SQL查詢在PDO

集PDO excuted異常模式,對於"SELECT * FROM tbl_name"查詢,您可能希望使用fetchAll()而不是fetch()

+0

「我的代碼能完成這項工作嗎?」 – shnisaka 2013-03-10 17:59:33

+0

你的代碼能完成這項工作嗎? – 2013-03-10 18:01:13

+0

我不知道,你告訴我! – shnisaka 2013-03-13 18:07:22