掃描二維碼關(guān)注博盈官方微信公眾號
立享網(wǎng)站建設(shè)優(yōu)惠
在PHP網(wǎng)頁中創(chuàng)建MySQL連接非常簡單,僅需一行指令即可,如下所示:
$link = mysql_connect(’數(shù)據(jù)庫所在位置’, ’數(shù)據(jù)庫賬號’, ’數(shù)據(jù)庫密碼’);
例如,要連接本機MySQL數(shù)據(jù)庫,數(shù)據(jù)庫賬號為root,數(shù)據(jù)庫密碼為123456,則連接指令如下:
$link = mysql_connect(’localhost’, ’root’, ’123456’);
這個$link變量便是通過創(chuàng)建完成的數(shù)據(jù)庫進(jìn)行連接的,如果執(zhí)行數(shù)據(jù)庫查詢指令,此變量相當(dāng)重要。
為了避免可能出現(xiàn)的錯誤(如數(shù)據(jù)庫未啟動、連接端口被占用等問題),這個指令最好加上如下的錯誤處理機制:
$link = mysql_connect('localhost', 'root', '123456')
or die("Could not connect : " . mysql_error());
如果連接失敗,便會在瀏覽器上出現(xiàn)“Could not connect”字樣,以告知用戶錯誤信息。
重點整理
在PHP網(wǎng)頁中創(chuàng)建MySQL連接非常簡單,僅需以下的指令:
$link = mysql_connect('數(shù)據(jù)庫所在位置', '數(shù)據(jù)庫賬號', '數(shù)據(jù)庫密碼');
數(shù)據(jù)庫選用
在一套MySQL數(shù)據(jù)庫中,可以容納許多數(shù)據(jù)庫并存,但每次操作均只能對單一數(shù)據(jù)庫進(jìn)行。因此在連接創(chuàng)建完成后,便需選用要操作的數(shù)據(jù)庫。
選用數(shù)據(jù)庫指令如下,在此以選用mysql數(shù)據(jù)庫為例:
mysql_query("use mysql");
也可以使用專門的API指令:
mysql_select_db("mysql") or die("Could not select database");
這兩個指令都是選用mysql數(shù)據(jù)庫為欲操作的數(shù)據(jù)庫。
重點整理
選用數(shù)據(jù)庫指令如下,可以使用:mysql_query("use mysql");
也可以使用專門的API來下指令:mysql_select_db("mysql");
執(zhí)行SQL指令
在選用數(shù)據(jù)庫后,便可進(jìn)行SQL指令的操作,以下的范例是通過PHP程序?qū)ysql數(shù)據(jù)庫執(zhí)行 "select * from user" 這段SQL指令的語句:
$result = mysql_query("select * from user",$link);
其中,$result變量將存儲查詢后的結(jié)果,而mysql_query()函數(shù)即是查詢指令專用的函數(shù),至少需要傳入兩個參數(shù),分別是SQL語句與SQL連接。在此SQL語句為:"select * from user",SQL連接為之前所建立的$link。
如果想把SQL查詢子句分開寫以增強程序的可讀性,也可這樣寫,意義與功能完全相同。
$sqlstr="select * from user";
$result = mysql_query($sqlstr,$link);
如果采用第二種寫法,更改SQL指令時,僅需更改$sqlstr參數(shù)的內(nèi)容,即可改變SQL指令。
在查詢時,為避免可能出現(xiàn)的錯誤,這個指令最好加上如下的錯誤處理機制:
$sqlstr="select * from user";
$result = mysql_query($sqlstr) or die("Query failed : " . mysql_error());
重點整理
進(jìn)行SQL指令的操作,對mysql數(shù)據(jù)庫執(zhí)行"select*from user" 這段SQL指令的語句:
$result=mysql_query("select*fromuser",$link);
分析表頭
在MySQL執(zhí)行完前面的mysql指令之后,接下來要做的便是分析所返回的數(shù)據(jù)。
而分析所返回的數(shù)據(jù)分成兩個部分:其一為分析表頭,也就是分析所返回數(shù)據(jù)的字段名稱;其二為分析表身,也就是分析返回的數(shù)據(jù)內(nèi)容。
表頭數(shù)據(jù)就是字段名稱,不見得一定要分析,通常在顯示完整表格、查找字段對應(yīng)關(guān)系時才會進(jìn)行分析。以user表格為例,表頭數(shù)據(jù)便是“Host”、“User”、“Password”等字段名稱。
根據(jù)SQL查詢子句的不同,所返回的表頭字段數(shù)也不同,因此通常以while指令進(jìn)行分析。以下的例子是以php的while指令配合mysql_fetch_field()函數(shù)分析表頭,并顯示在表格的一行中:
while ($field = mysql_fetch_field($result)) {
echo "<td>".$field->name."</td>\n";
}
echo "</tr>\n";
在這個范例中,mysql_fetch_field()函數(shù)必須傳入$result查詢結(jié)果變量,所創(chuàng)建的每個$field變量便代表一個字段。每個字段都有數(shù)種屬性(名稱、長度、類型等),在此我們通過->操作符,取得 $field->name 這個字段名稱屬性,并通過 echo 指令顯示出來。
重點整理
分析所返回的數(shù)據(jù)分成兩個部分:其一為分析表頭,其二為分析表身。
分析表頭使用mysql_fetch_field()函數(shù)必須傳入$result查詢結(jié)果變量,再通過->操作符,取得 $field->name 這個字段名稱屬性。
分析表身
表身便是返回數(shù)據(jù)的實際內(nèi)容,以user表格為例,表身數(shù)據(jù)便是“l(fā)ocalhost”、“root”等表格實際內(nèi)容,在范例中,我們將表身內(nèi)容以表格方式全部顯示出來,程序代碼如下:
while ($row = mysql_fetch_row($result)) {
echo "<tr>\n";
for($i=0;$i<count($row);$i++){
echo "<td>".$row[$i]."</td>";
}
echo "</tr>\n";
}
與表頭數(shù)據(jù)相同,因返回數(shù)據(jù)條數(shù)不定,因此亦需使用while指令進(jìn)行分析。其中mysql_fetch_row()函數(shù)需傳入$result數(shù)據(jù)。
經(jīng)過分析后,所返回的$row是一個一維數(shù)組變量,存儲每一行所有的數(shù)據(jù)字段。再通過for循環(huán),并配合count()函數(shù)計算數(shù)據(jù)行中的列數(shù),將$row數(shù)組中每一元素顯示出來。
當(dāng)然,也可根據(jù)需要,取出單一目標(biāo)字段進(jìn)行分析,如賬號密碼比較等。
重點整理
分析表頭使用mysql_fetch_row()函數(shù),必須傳入$result查詢結(jié)果變量,再通過for循環(huán),并配合count()函數(shù)計算數(shù)據(jù)行中的列數(shù),將$row數(shù)組中每一元素顯示出來。
釋放資源
完成SQL操作后,必須釋放所建立的連接資源,以免過多的連接占用造成系統(tǒng)性能的下降。釋放資源指令如下:
mysql_free_result($result);
mysql_close($link);
在這兩行語句中,第一行釋放了$result這個變量,第二行指令關(guān)閉與數(shù)據(jù)庫的連接$link,以釋放所占用的存儲器空間與數(shù)據(jù)庫連接。
重點整理
釋放資源指令:
mysql_free_result($result);
mysql_close($link);