2016-07-25 58 views
0

當條件滿足時,我試圖從表中獲取行(status ='no transit'),但即使行應該顯示出來也沒有顯示(count爲1或更多) 。顯示MySQL表中的行時出錯

  if($query['num'] == 0){ 
      echo "<p>No shopping orders on transit</p>"; 
      }else{ 

       $sql = "SELECT *, FORMAT(total, 0) AS total, FORMAT(grand_total, 0) AS grand_total FROM shipping_details WHERE status = 'no transit' ORDER BY order_id DESC"; 

       foreach ($db->query($sql) AS $query){ 
       echo" Show some results "; 

       $select = "SELECT * FROM shipping_order WHERE order_id = :order_id"; 

       foreach ($db->query($select, array('order_id' => $query['order_id'])) AS $items){ 

       echo" 
       Some results 
       "; 
       //Foreach ends 
       } 
      } 
     } 
+0

你說的神祕錯誤出現了什麼? – Drew

+1

'$ db'是什麼類型的對象?在內部查詢中,您使用帶有query()方法的綁定參數':order_id'。如果這是一個普通的PDO對象,那麼需要在'prepare()/ execute()'中完成,但是如果它是PDO上的一個自定義包裝類,它實現了一個接受參數的query()方法,請張貼類定義(或其相關部分) –

+1

總是在開發和測試代碼時,在腳本的頂部'error_reporting(E_ALL); ini_set('display_errors',1);'。如果這看起來是一個PDO對象,用'$ db-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION)啓用異常;' –

回答

0

它不工作,因爲你忘了使用從pdoStatemnt類中準備和執行方法。

見下文:

$stmt = $db->prepare("SELECT * FROM shipping_order WHERE order_id = :order_id"); 

$stmt->execute(array('order_id' => $query['order_id'])); 

       while ($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 

       echo" 
       Some results 
       "; 
       //Foreach ends 
       } 
+0

這不是問題。如果我應該調整像say(name ='john doe')而不是(status ='no transit')的查詢,我會得到結果。 (狀態='沒有過境')似乎沒有顯示任何結果,即使它應該。 – radioactive

0

你沒有表現出足夠的,我們可以告訴我們的代碼庫您使用連接到您的DB(庫MySQLi,mysql_或PDO),所以下面的代碼可能需要一些調整。

問題基本上是,你永遠不會檢索你的數據庫結果。而是嘗試循環查詢執行本身。

變化

$sql = "SELECT *..."; 
foreach ($db->query($sql) AS $query)... 

$sql = "SELECT *..."; 
$result = $db->query($sql); //execute the query 
if(!$result) die($db->error); //exit and show error if query failed 

//now we can fetch the results one at a time and loop through them 
//this line may need to be adjusted if you're not using MySQLi 
while($row = $result->fetch_assoc())... 

while循環,$row將包含來自數據庫記錄的值。使用print_r($row)來了解它的形狀。

+0

請注意,如果這確實是PDO,'$ db-> query($ sql)'是可遍歷的並且將在'foreach'上工作,很難用不完整的標籤和信息來回答 – Ghost

+0

@Ghost有趣;不知道。 – BeetleJuice

+0

如果我應該調整像say(name ='john doe')而不是(status ='no transit')的查詢,我會得到結果。 (狀態='沒有過境')似乎沒有顯示任何結果,即使它應該。 – radioactive