首先,mysql_xxx()
不推荐使用这些功能。不建议使用它们。推荐使用 PHP 中的两个替代方案 -mysqli()
和PDO
.
较旧的mysql_xxx()
函数不允许您使用foreach
循环记录集。
但是,两个较新的替代 API都允许这样做,因为它们实现了Iterator
接口。
所以是的,可以foreach
在 PHP 中使用循环记录集,但不能使用旧mysql_xxx()
函数。
你可以这样写代码:
$conn = new mysqli(....);
foreach ( $conn->query('SELECT ....') as $row ) {
print_r($row);
}
或像这样:
$db = new PDO('mysql:....', $user, $pass);
foreach ($db->query('SELECT ....') as $row) {
print_r($row);
}
话虽如此,请注意自 PHP v5.4 起才有可能做到这一点mysqli
,因此您需要更新您的 PHP 版本。PDO
另一方面,多年来一直支持此功能。
当然,它们也可以使用while
循环,这就是你的朋友不太正确的地方,因为while
和foreach
这里真的没有任何区别。从 切换while
到foreach
不会对代码的性能产生任何影响。他们在引擎盖下做同样的事情。foreach
在这种情况下,实际上只是“语法糖”。
我强烈建议切换到这些较新的 API 之一,即使您不打算使用它foreach
来执行循环,因为正如我所说,旧mysql
函数已被弃用,这意味着它们可能会从未来的 PHP 中完全删除版本。因此,如果您希望您的代码在未来继续运行,您应该立即切换。