当sql结果包含多行时,如何从中单独获取每一行?

时间:2013-10-06 13:12:29

标签: php mysql sql sql-server

当我向SQL数据库发送查询并返回多行时,如何单独获取每一行?我已经失败了几个小时都没有任何结果。

例如:

有一个表,其中包含名称(前名和姓名):

汉斯汉森 汉斯彼得森
彼得彼得森

我的查询如下:

$query = "SELECT * FROM names WHERE forename = 'Hans'";

我尝试使用mysql_result(),但此函数只返回一个字段。我想创建第二个函数,它基于mysql_result()(计数列 - > for循环创建数组),但我做了一些研究,很多人说,mysql_result()非常当你的结果变大时,慢。

如何以快速的方式将结果存储在每行的不同数组中,最终创建一个好看的表?

2 个答案:

答案 0 :(得分:0)

while($row=mysql_fetch_array($result))
{
    $results[] = $row;
}

答案 1 :(得分:0)

我不知道你在使用什么,但我猜一个使用旧的php mysql函数的mysql数据库比你使用它:

$result = mysql_query("SELECT * FROM names WHERE forename = 'Hans'");

while($row = mysql_fetch_assoc($result)){
    echo "$row[forename] - $row[sirname] - etc. <br>";
}

我也猜你是php的新手并且还不了解这个问题,但你问的问题被多次询问并已经回答,所以在询问这类简单问题之前尝试搜索和学习。

你也可能问自己为什么在where循环中声明一个变量。 while循环从mysql_fetch_assoc获得响应。当它为false时它会停止,但每次有一行它都会返回一个数组。那么数组被赋值给变量$row并且不会影响循环(尽量不要放$row =并看它仍然循环)。然后,您可以只使用数组值,每次旋转后,mysql结果指针将进一步移动一行。在最后一行,函数mysql_fetch_assoc将移动并看到没有结果,它将返回false。循环停止并继续到下一行php代码。