php - 结果集mysql上的foreach只返回一个随机值

标签 php mysql sql foreach resultset

我正在尝试在一个脚本中做一些简单的选择。

我看看如果我尝试读取我的结果集有一段时间没有任何问题但是如果我尝试使用 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/

相关文章:

php - 如何获取(通过引用)数组的长度

php - 登录 - 用户级别

javascript - 数据库中多行的倒计时时间

mysql - 如何合并两个sql select语句

python - 通过创建模块简化数据库(psycopg2)的使用

mysql - 如何在存储过程中使用mysql中的if

php - 如何为比另一个参数更大的值创建自定义 Laravel 规则

php - 使用带有 html 和 php 的文件页面

c# - 为什么我的查询不运行?

php - 需要身份验证 (packagist.org) Laravel 安装