2013-03-04 64 views
-2

我在下面得到了这段代码,它显示了我刚刚得到的第一个数组结果。它怎么能让我看到他们呢?Echo all array results

$res = mysql_query("SELECT clients FROM area ORDER BY date") or die("Error: " . mysql_error()); 
while($row = mysql_fetch_array($res)){ 
    foreach($row as $value){ 
     $result = explode(",", $value); 

     foreach($result as $newvalue){ 
      $query="SELECT clients FROM names where names.id='$newvalue'"; 

      $res2 = mysql_query($query); 
      $r = mysql_fetch_array($res2); 
      $parent = $r['clients']; 
     } 
    } 


    // echo part 

    echo "<td>" . $parent . "</td>"; 
} 

此外,我想呼应区域名称和日期,但是当我做选择*和回声名称和日期我什么都没有。

谢谢

+0

请阅读本关于MySQL扩展 - http://stackoverflow.com/questions/12859942/why-shouldnt-i -use-mysql-functions-in-php#回答#12860140 – Phil 2013-03-04 02:46:53

+0

可能重复[从mysql获取多行输出](http://stackoverflow.com/questions/15055037/fetch-multiple-row-output-from-mysql ) – 2013-03-04 02:47:48

+0

感谢您的答复,但我仍然无法得到所有结果从阵列 – jak 2013-03-04 02:57:32

回答

0

您的主要问题是您不断重写$ parent的值;这就是为什么你只能得到一行数据。 $ parent必须是可以添加到找到的行上的数组。

而且,考虑使用PHP的PDO相反,它是更安全,更面向对象:

$database = PDO(/*db_connection_data*/); 

$stmt = $database->prepare("SELECT `clients` FROM `area` ORDER BY `date`"); 
$stmt->execute(); 

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

if($stmt->rowCount() > 0) { # if results were found 

    $parent = array(); # array needs to be initialized or else you keep overwriting it. 

    foreach($res as $value) { 

      $stmt = $database->prepare("SELECT `clients` FROM `names` WHERE `names.id` = ?"); 
      $stmt->bindValue(1, $value); 
      $stmt->execute(); 

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

      # use $parent[] to add result as next element of the array 
      if($res2->rowCount() > 0) { $parent[] = $res2[ 'clients' ]; } 
      else { $parent[] = ""; } 

    } 

} 

echo "<pre>" . print_r($parent, 1) . "</pre>"; # print the $parent array in a more readable form. 
+0

谢谢。现在我得到错误:调用一个非对象的成员函数rowCount() – jak 2013-03-04 11:21:53