我有这个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行...问题是什么?
答案 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);