我正在尝试在一个脚本中做一些简单的选择。
我看看如果我尝试读取我的结果集有一段时间没有任何问题但是如果我尝试使用 foreach,我只是读取 1 o 2 值全部错误...... 为什么?
$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
foreach($rows= mysql_fetch_array($result, MYSQL_BOTH) as $row) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
-
* OUTPUT WHILE*
ID: 0 Name: title0
ID: 1 Name: title1
ECC....
*OUTPUT FOREACH*
ID: 1 Name:
ID: 1 Name:
ID: t Name: i
ID: t Name: i
最佳答案
使用 foreach 只能得到一行的原因是函数 mysql_fetch_array() 只返回一条记录。
在 while 循环中,调用函数的条件在每个循环中都会重新计算。这太完美了。
您拥有的 foreach 非常奇怪,我想发生的事情是 mysql_fetch_array() 将一条记录作为数组读取到变量 $rows 中,然后它将遍历记录中的每个 COLUMN....换句话说,$rows 只是一行,$row 是行中的一个值。 您在输出中只看到一个或两个字母的原因是因为字符串上的 $row[0] 只是给您字符串中的第 0 个字母。
foreach 工作的唯一方法是使用“获取所有”函数,该函数提供一个数组数组。但是你必须自己创建它......它可能主要包含 while 循环 :)
如果您按照建议使用 PDO,它会附带 fetchAll 功能。
关于php - 结果集mysql上的foreach只返回一个随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30012404/