[英]how to use foreach loop in generating the result of mysql_query
我一直在使用while循环在数据库中生成所有记录,而我的一些朋友告诉我,最好使用foreach从数据库中生成记录,但是我不知道如何。
<?php
$query = mysql_query("select * from sampleTABLE");
while($i = mysql_fetch_array){
echo $i['samplefieldName'];
}
?>
我的问题是,如何使用foreach显示数据库中的记录? 可以在while循环中比较一下它的语法并生成结果,谢谢。
就像@Zerkms说的那样,这里不需要使用foreach而不是在这里
while($i = mysql_fetch_array( $query)){
但是你可以通过下面的代码做到这一点,但我确信它不是一个好方法
$result_list = array();
while($row = mysql_fetch_array($query)) {
result_list[] = $row;
}
foreach($result_list as $item) {
//you can now echo $item ; or whatever you want
}
好读
首先,不建议使用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
实际上只是“语法糖”。
即使您不打算使用foreach
进行循环,我也强烈建议切换到这些较新的API之一,因为正如我所说,旧的mysql
函数已被弃用,这意味着它们很可能会从中完全删除。未来的PHP版本。 因此,如果您希望代码在将来继续运行,则应立即切换。
不可能使用foreach
遍历结果集。
foreach
仅适用于已经获取数据的情况。
因此,您的朋友只是错了,他的建议没有任何意义。
@zerkms
我也是这样想的。
我的“ tbl_login”表结构也附加为
<?php
include '../common/dbConnection.php';
class foreachtest{
function foreachtesting(){
$sql="SELECT * FROM tbl_login";
$query_result=$GLOBALS['con']->query($sql);
return $query_result;
}
}
$myobject = new foreachtest();
$result=$myobject->foreachtesting();
foreach ($result as $a){
echo $a['username'];
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.