2013-03-04 2 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 # answer-12860140 – Phil

+0

Возможный дубликат [выборки нескольких строк из mysql] (http://stackoverflow.com/questions/15055037/fetch-multiple-row-output-from-mysql) –

+0

спасибо, что ответ, но я все еще не могу получить все результаты из массива – jak

ответ

0

Ваша главная проблема в том, вы держите переписывание значение $ родителя; поэтому вы возвращаете данные только одной строки. $ 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