2016-01-07 42 views
1

方式我已經意識到了什麼,以及如何使用fetch_arrayfetch_assocfetch_rowfetch_objectfetch_all(MYSQLI_NUM or MYSQLI_ASSOC or MYSQLI_BOTH)推薦的抓取結果數據庫[OOP,PHP和庫MySQLi]

但我剛剛發現並試驗了下面的代碼爲我工作,沒有使用任何fetch_ *對象

$sqli = $db->query("SELECT * FROM `tblSample`;"); 

foreach($sqli as $out) { 
    echo "val1 => ", $out['0'], "<br />val2 => ", $out['1'], "<br />val3 => ", $out['2']; 
} 

,你可以看到,我沒有使用任何fetch_對象或使出於某種原因,通過使用foreach loop,我是仍然能夠讀取查詢的結果。

我試圖這樣做與while loop一樣如何與foreach loop,但無濟於事。

所以我只是想問一下,因爲我知道其他一些專業開發者可能已經遇到過這種方式。

這是推薦的嗎?假設有沒有使用fetch_對象?謝謝

回答

2

http://php.net/manual/en/pdo.query.php

沒有什麼必然不妥做這樣的,但在幾乎所有的代碼我見過/寫入指定模式獲取。

+0

我也是。並且我個人在檢索查詢結果時經常使用fetch_對象。但是如果技術上這種語法沒有問題。那麼在一些代碼中,這樣做可能很有用。無論如何感謝隊友 – TheQuestioner

0

「查詢」和類似的「執行」是與PDO(PHP數據對象)相關的方法,它提供了與數據庫進行交互的方法(不僅是MySQL,還有其他的如SQL Server,Oracle,SQLite和其他),因此它是好的學習如何使用這些方法的想法(查詢,執行和許多更多,請查看我們的PDO文檔)。

關於PDO的好處是,如果你想用不同的數據庫做另一個項目,與它的交互對你來說幾乎是一樣的,不僅如果你現有的項目被遷移到另一個數據庫,你只是需要修改PDO對象中的連接字符串,並且你的代碼將會是相同的(不是很好?)總之,如果你知道你只是與之交互,那麼使用MYSQL對象(MYSQLI_NUM或MYSQLI_ASSOC或MYSQLI_BOTH)沒有任何問題MYSQL數據庫,但使用PDO可提供更好的可擴展性。