2013-11-28 97 views
4

我明白mysqli_fetch_rowmysqli_fetch_objectmysqli_fetch_assocmysqli_fetch_array之間的差異。何時以及爲什麼要以某種方式使用mysqli_fetch_row,mysqli_fetch_object,mysqli_fetch_assoc,mysqli_fetch_array

我的問題是如果他們是如此相似(如果他們真的幾乎相同,許多主題說)我們應該使用哪一個? 我們爲什麼要使用首選項,並且存在一些性能差異?

我讀過一些人說永遠不要使用mysqli_fetch_array。我很困惑。我正在閱讀一些PHP書籍,並且所有示例都包含它。如果這不正確,那麼在鍛鍊時停止使用它並使用可以解釋和推薦的其他東西會更好?

我也看過,這些都是平等的:

mysqli_fetch_array($result, MYSQLI_ASSOC) = mysqli_fetch_assoc($result) 
mysqli_fetch_array($result, MYSQLI_NUM) = mysqli_fetch_row($result) 
mysqli_fetch_array ($result) = mysqli_fetch_assoc($result) + mysqli_fetch_row($result) 

如果他們是平等的概念,有沒有性能上的差異?我們應該使用哪個?爲了更好的編程習慣,差異是否有助於提高開發人員的工作效率?

我讀 「深入淺出PHP MySQL的&(腦友好的嚮導)」 和 「VISUAL QUICKPRO指南PHP 5高級」。他們使用不同的做法,但作者不解釋他們的任何事情。

我堅信這些差異有很大的原因,他們有不同的用法和情況,但我找不到在哪裏使用不同的函數和語法。

非常感謝您提前!

+2

簡單:有幾種方法可以「從查詢中獲取結果」。你可以讓它們以數字或索引列名作爲數組或作爲對象。編寫API的人意識到了這一點。他做了幾個(方便)包裝來做這些事情。你可以選擇你喜歡的。這就是很多編程的過程。 – deceze

+0

欺騙,所以我可以使用任何我喜歡的,這不管?你能告訴我最常用的功能嗎?我習慣於使用mysqli_fetch_array,因爲很多示例都與它配合使用。但爲什麼人們說從不使用它?或者他們不以任何嚴肅的目的說這個?並感謝您的快速回復! –

+0

我通常會使用'_fetch_assoc',因爲我想按名稱訪問我的數據,因爲它使代碼更易於理解,並且不易出錯。 '_fetch_array'返回數字*和*字符串索引數組,這是多餘的,可能可能更浪費。並不是說它在事物的宏偉計劃中確實很重要,但仍然如此。做你需要的東西;如果你想要命名鍵,使用給你命名鍵的功能,除此之外別無其他。 – deceze

回答

-4

這裏有一些引用應該回答你的問題: mysqli_fetch_rowmysqli_fetch_assocmysqli_fetch_objectmysqli_fetch_array

一般來說,PHP Documentation似乎是你一個很好的資源。

+6

這是一個不好的答案。我懷疑OP是否已經閱讀過這些內容,如果他沒有閱讀,手冊也沒有明確說明哪個「更好」。 – deceze

+1

是的,我期待着像你這樣的評論,但我認爲這些鏈接可以幫助OP。 – Kai

+0

謝謝你們!我閱讀了參考文獻,甚至在最後幾周還記得好幾次。我是一名設計師,現在真的很難。但是文檔沒有解釋什麼時候以及爲什麼使用和更好的使用。我只想對自己保持嚴格的態度並習慣於最好的概念,因爲程序員經常互相嘲笑:) –

0

我不認爲有一個巨大型動物,它只是你只需要一個函數來完成相同的;)

1

從文檔上php.net這些線是關鍵:

mysqli_fetch_array ()是mysqli_fetch_row() 函數的擴展版本。除了將結果數組存儲在數字索引 之外,mysqli_fetch_array()函數還可以使用結果集 的字段名稱作爲關鍵字將關聯索引中的 數據存儲起來。

http://www.php.net/manual/en/mysqli-result.fetch-array.php

在兩個或多個列具有相同的名稱來引用該列的第一次出現(多個)的唯一方式是例通過數值索引。在這些情況下,您需要mysqli_fetch_rowmysqli_fetch_array作爲其第二個參數(程序用法),其中MYSQLI_BOTHMYSQLI_NUM

mysqli_fetch_assoc($result)mysqli_fetch_array($result, MYSQLI_ASSOC)只是簡寫。

mysqli_fetch_object做你所期望的:它返回結果的行作爲一個對象。在mysqli_fetch_assoc上使用這個是一個對象或數組是否更好地表示正在處理的記錄的問題。該對象可以是任何你想要的類 - stdClass是默認的。

相關問題