如何回显整个mysql_fetch_array

时间:2011-12-11 01:39:23

标签: php

我有这个SQL代码:

$sql="SELECT * FROM functions
      WHERE user_name='ben ' 
      AND (function_description LIKE '%xxx%') ";

它在phpmyadmin SQL上给了我两行代码:

user_name   function_type   function_name   function_description
ben         PHP         PHP1            that xxx
ben         PHP         PHP2            lofaif adnan xxx i

但是当我试图回复这些行时使用它:

$results=mysql_query($sql,$connection);
 while($row=mysql_fetch_array($results, MYSQL_ASSOC))
{
    echo $row['function_name'] . " : " . $row['function_description'] . "<br/><br/>";
}

它让我回来了:

PHP2:lofaif adnan xxx i

我希望回复2行...问题是什么?

2 个答案:

答案 0 :(得分:2)

您当前所在的while循环仅打印出当前迭代。要打印出DB中的所有行,只需将$rows变量初始化为数组$rows = array();,然后通过while($rows[]=mysql_fetch_array($results, MYSQL_ASSOC))将所有行分配给它。您的$rows变量现在应该包含所有数据库记录。

$results=mysql_query($sql,$connection);
$row = array();
while($rows[]=mysql_fetch_array($results));

//should not contain all rows
print_r( $rows );

答案 1 :(得分:0)

您可以使用PDO使用fetchAll()返回结果集的多合一数组:

try {
    $db = new PDO($dns, $user, $pass)
} catch (PDOException $e) {
    exit($e->getMessage())
}

$stmt = $db->prepare($sql);
$stmt->execute();

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

var_dump($result);