PHP初學留神 三

2022-04-10 00:08:35 字數 2041 閱讀 7015

星期一進行面試結束後,意味著我的考研日子也結束了,以及我的

2013

。在好好總結之後還不能停止學習,心想著要把演算法繼續學下去,還有

linux

。不過呢,始終都要記住尼采老師的這句當頭棒喝:「不加選擇的知識衝動,正如不分物件的性衝動,都是下流的標誌。」嗯嗯,我們繼續。

一.讀取資料庫亂碼問題

1天。糾結著從資料庫的編碼修改到網頁檔案的編碼修改,以及

mysql

的my.ini

檔案引數修改,都沒有解決問題。頁面中文顯示

"??"

就證明了問題不是出現在資料庫

(如果是,資料庫的表項就應該是亂碼

),也不是網頁頁面的編碼

(如果是,頁面會出現混亂的字元而不是

??),而問題是出在

php連線資料庫時沒有設定資料庫輸出的格式。最後解決問題參考的是這篇部落格

《解決php

寫入、讀取

mysql

資料庫時中文亂碼問題》

,謝謝jankerli。問題的關鍵就在mysqli類。這個類是擴充套件了php操作mysql的功能。所以網路上通行的在連線資料庫後的mysql_query(「set names utf8″)就起不了作用了。而是寫這句話。

1

$result = new mysqli('localhost', 'username』, 'password', 'databasename');

2 $result->set_charset('utf8');

至於mysql與mysqli的比較,各有優缺點吧。請記住這句話,「如果你是使用mysql4.1.3或更新的服務端版本,強烈建議你使用mysqli 擴充套件替代它。」。

二.fetch

在做**時用到了一系列含有fetch的函式,現總結總結。

1.fetch_object()

1

$result = $conn->query($query);2

3if($result->num_rows > 0)

解釋一下該**。首先,使用mysqli類的方法,執行查詢語句,返回乙個mysqli_result類的例項($result)。在判斷結果有效後,使用$result物件的方法fetch_object()返回記錄集中的當前一行記錄作為乙個物件。最後在根據需要進行傳值。

2.fetch_assoc()

1

$result = @$conn->query($query);2

if (!$result) 5

6$result = @$result->fetch_assoc();

7return

$result;

同樣也是乙個mysqli_result類的例項($result),但取得的是乙個關聯陣列(associative array)。那麼什麼是關聯陣列呢?這是一種資料結構。與索引陣列相比,關聯陣列的每個i鍵(key)都關聯乙個值(value)。

通過關聯陣列,我們可以把

values

關聯到keys。具體就是在定義陣列時,使用逗號分隔的

鍵(key)=> 值(value)

對來進行對映。所以使用這裡的$result時,不再用$result->$id,而是$result[『id』]。這就是他倆的區別。

3.fetch_row()

1

$num_cats = @$result->num_rows;

2 f($num_cats == 0)

5$row = $result->fetch_row();

6if(isset($row

))else

在檢查完查詢語句結果有效後,取得乙個列舉陣列($row)。至於與關聯陣列除了概念上的區別,我就知道foreach迴圈可以遍歷關聯陣列; 而for迴圈只能遍歷列舉陣列, 不能遍歷關聯陣列。其他的還有待學習。

最後提一句,$result->fetch_object()等價於mysqli_fetch_object()。前者是物件導向風格,後者是過程化風格。當然是推薦前者了。

PHP初學留神 一

1.轉義字元的使用 這個問題是在php下編寫sql語句的字串時遇到的,因為在where後面的條件判斷經常要用到雙引號 來表示字元。而諸如下面這樣的語句就會報錯。query select from where name zida 原因是雙引號的存在感太強了,最後兩個 會被誤認為少了連線符號的兩個字串。...

初學PHP之路

首先裝xampp,因為這個整合環境可以很好的搭建php執行環境和管理。安裝完成之後開啟 mysql和apache,也就是它的那個start鍵。隨後在瀏覽器上開啟 http localhost 可以開啟就說明你的安裝完成。記得你的xampp的安裝位置,找到xampp htdocs目錄,新建記事本,然後...

php初學彙總

1 php引擎將每乙個表單域放到乙個叫做 http post vars的陣列中,在陣列有兩個元素 username和password。在此程式中可以通過 http post vars username 和 http post vars password 訪問表單資訊。使用 http post var...