簡體   English   中英

如何使用foreach循環生成mysql_query的結果

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

注意

  1. 整個ext/mysql PHP擴展(提供所有帶有前綴mysql_的功能)已從PHP v5.5.0開始正式棄用,以后將被刪除。 因此,請使用PDOMySQLi

好讀

  1. mysql擴展名已棄用,以后將被刪除:改用mysqli或PDO
  2. MySQL開發人員的PDO教程
  3. Pdo初學者教程

首先,不建議使用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循環,而這正是您的朋友不太正確的地方,因為在這里, whileforeach之間確實沒有任何區別。 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'];
    }

?>

tbl_login MYSQL表屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM