[英]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.