2016-07-25 30 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