php連接資料庫有三種方法,剛發現透過mysql_connect,mysql_query連線已被廢棄,而現在建議的是透過「物件導向方法」和「PDO方法」連接資料庫。
而我在使用物件導向的方法連接時,查詢出來的結果中文無法顯示,網路上給的大部分解決辦法都是針對老式連接方法的解決辦法,不過最終還是找到了解決方案。
大體的連接方法如下:
<span><?php </span><span><span>header</span><span>(</span><span>"Content-type: text/html; charset=utf-8"</span><span>); </span><span>$mysql_url</span><span>=</span><span>"localhost"</span><span>;</span><span>//</span><span>数据库服务器的地址 </span><span>$mysql_username</span><span>=</span><span>""</span><span>;</span><span>//</span><span>数据库用户名的名称 </span><span>$mysql_password</span><span>=</span><span>""</span><span>;</span><span>//</span><span>连接数据库的密码 </span><span>$mysql_database</span><span>=</span><span>""</span><span>;</span><span>//</span><span>数据库的名字 </span><span>$db</span><span>=</span><span>new </span><span>mysqli(</span><span>$mysql_url</span><span>,</span><span>$mysql_username</span><span>,</span><span>$mysql_password</span><span>,</span><span>$mysql_database</span><span>); </span><span>if</span><span>(</span><span>mysqli_connect_error</span><span>()){</span><span>//</span><span>数据库连接失败时提示 </span><span>echo </span><span>'Could not connect to database.'</span><span>; </span><span>exit</span><span>; </span><span>} </span><span>mysqli_query</span><span>(</span><span>$db</span><span>,</span><span>'set names utf8'</span><span>);</span><span>//</span><span>给查询结果设置编码 </span><span>$result</span><span>=</span><span>$db</span><span>->query(</span><span>"SELECT * FROM yc_brand"</span><span>);</span><span>//</span><span>此处</span><span>sql</span><span>语句表面不能加单引号或双引号 </span><span>$all</span><span>=</span><span>$result</span><span>->fetch_all();</span><span>//</span><span>获取结果集中的所有数据</span><span>var_dump</span><span>(</span><span>$all</span><span>); </span><span>?></span>
我們可以呼叫該物件的方法將其轉換為陣列等表現。
較常用的有fetch_row,fetch_array,fetch_all
一、fetch_row().得到的$row是一個一維數組,每次只會得到一組“記錄”,即:如果你查出來的應該是10組記錄,而他每次只會返回給你一組記錄。
需要用一個while循環將每次查詢出來的一維數組再裝到一個一維數組中,形成一個二維數組(如裝有10組記錄的二維數組)。
這種方法的特點是:查詢出來的一維數組內的鍵名預設為從0開始的數字
<span>$rows</span><span><span>= </span><span>array</span><span>();</span><span>//</span><span>建立一个数组用来装查询结果 </span><span>while</span><span>(</span><span>$row </span><span>= </span><span>$result</span><span>->fetch_row()){</span><span>//</span><span>只要能查到结果就执行 </span><span>$rows</span><span>[] = </span><span>$row</span><span>;</span><span>//</span><span>将每次查的结果装到之前定义的数组 </span><span>} </span><span>var_dump</span><span>(</span><span>$rows</span><span>); </span></span>
二、fetch_array()
()
此方法大致與fetch_row相同,他們兩的不同之處在於,fetch_array()查出來的一維數組中裡面每一列有兩個鍵值名,原表的列名會自動成為各個鍵值名,而也會擁有從0開始自動排序的鍵值名
三、fetch_all()
$rows = $result ->fetch_all();
$rows = $result ->fetch_all();
來得此方法$rows為一個二維數組,其實“就相當於fetch_row方法已經循環完存完一維數組的二維數組$rows”,可以直接打印。