注:因?yàn)檫B接數(shù)據(jù)庫需要較長(zhǎng)的時(shí)間和較大的資源開銷,所以如果在多個(gè)網(wǎng)頁中都要頻繁地訪問數(shù)據(jù)庫,則可以建立與數(shù)據(jù)庫的持續(xù)連接。即調(diào)用mysql_pconnect()代替mysql_connect()。
基本步驟:
1.連接服務(wù)器:mysql_connect();
2.選擇數(shù)據(jù)庫:mysql_select_db();
3.執(zhí)行SQL語句:mysql_query();
————————————————————————
查詢:select
顯示:show
插入:insert into
更新:update
刪除:delete
————————————————————————
4.關(guān)閉結(jié)果集:mysql_free_result($result);
5.關(guān)閉數(shù)據(jù)庫:mysql_close($link);
__________________________________________________________
分析testconn.php文件:
<?php
$link=mysql_connect("localhost","root","root") or die("connection
error".mysql_error());
$flag=mysql_select_db("guestbook",$link);
if($flag){
echo "數(shù)據(jù)庫選擇成功!";
}
?>
1.連接服務(wù)器:mysql_connect('hostname','username','password')
其中hostname代表 主機(jī)名或IP(若端口號(hào)省略則默認(rèn)為3306),該函數(shù)返回值代表一個(gè)資源標(biāo)識(shí)(相當(dāng)于指針),通常賦值給一個(gè)變量:
$link=mysql_connect("localhost","root","root") or die("can't connect database".mysql_error());
2.連接指定數(shù)據(jù)庫:mysql_select_db("數(shù)據(jù)庫名"[,連接標(biāo)識(shí)]),最多兩個(gè)參數(shù),成功則返回1,失敗則返回0,示例如下
<?php
$link=mysql_connect("localhost","root","root") or die("connection error".mysql_error());
$flag=mysql_select_db("guestbook",$link);
mysql_query("set names gb2312");
if($flag){
echo "connect success!"."<br/>";
}
?>
3.執(zhí)行SQL語句:mysql_query("SQL語句"[,連接標(biāo)識(shí)]),最多兩個(gè)參數(shù),如果執(zhí)行的是查詢指令select,成功則返回查詢后的結(jié)果集(相當(dāng)于指針),失敗則返回0,如果SQL語句是insert,delete,update等操作指令,成功則返回1,最多兩個(gè)參數(shù),成功則返回1,失敗則返回0。
$result=mysql_query("select * from tb_memeber",$link);
注:mysql_unbuffered_query()函數(shù)與mysql_query類似,但是不自動(dòng)獲取并緩存結(jié)果集,所以效率更高。
4.使用mysql_fetch_array()函數(shù)從數(shù)組結(jié)果集中獲取信息
語法格式:array mysql_fetch_array(resource result[,int result_type])
即它有兩個(gè)參數(shù):
resource result //resource類型(相當(dāng)于指針)
int result_type //int類型,這個(gè)參數(shù)通常不用
返回的形式是數(shù)組型(array)。
注:類似的還有函數(shù)mysql_fetch_row(),用于逐行獲取數(shù)據(jù)。mysql_fetch_object()函數(shù)也類似,但輸出的時(shí)候必須寫成指針的形式,例如$info->email,不能寫成$info->[2]。
這三個(gè)函數(shù)的特點(diǎn)是,每執(zhí)行一次獲取一行記錄(colunm),執(zhí)行第二次則獲取第二行記錄…,例如:
$sql=mysql_query("select * from guest",$link);
顯然,這里面有很多行記錄,調(diào)用mysql_fetch_array($sql)一次獲取一行記錄:
$info=mysql_fetch_array($sql);echo $info[name];//輸出第一行記錄中的name值zollty
$info=mysql_fetch_array($sql);echo $info[name];//輸出第二行記錄中的name值harlizou
$info=mysql_fetch_array($sql);echo $info[name];//輸出第三行記錄中的name值vip1990
……
上面的寫法很笨,可以簡(jiǎn)寫為:
do{
echo $info[name];
}while($info=mysql_fetch_array($sql))
或者
do{
$info=mysql_fetch_array($sql);
if($info)
{echo $info[name];}
}while($info)
第一種寫法更簡(jiǎn)潔,但是很難理解,第二種寫法是C語言的寫法,其邏輯很清晰。
5.使用mysql_num_rows()函數(shù)獲取查詢結(jié)果集中的記錄數(shù)。
注:要想獲取由insert,update,delete語句所影響到的數(shù)據(jù)行數(shù),則必須使用mysql_affected_rows()函數(shù)。