PHP向MySQL數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)有三個(gè)步驟:
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供寧武網(wǎng)站建設(shè)、寧武做網(wǎng)站、寧武網(wǎng)站設(shè)計(jì)、寧武網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、寧武企業(yè)網(wǎng)站模板建站服務(wù),十余年寧武做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
1,PHP和MySQL建立連接關(guān)系
2,打開(kāi)MySQL數(shù)據(jù)庫(kù)
3,接受頁(yè)面數(shù)據(jù),PHP錄入到指定的表中
1、2兩步可直接使用一個(gè)數(shù)據(jù)庫(kù)鏈接文件即可:conn.php
代碼如下
?php
mysql_connect("localhost","root","");//連接MySQL
mysql_select_db("hello");//選擇數(shù)據(jù)庫(kù)
?
當(dāng)然,前提是已經(jīng)安裝WEB服務(wù)器、PHP和MySQL,并且建立MySQL表“cnbruce”
mysql_connect()中三個(gè)參數(shù)分別為MySQL地址、MySQL用戶名和MySQL密碼
然后就是通過(guò)WEB頁(yè)面?zhèn)鬟f數(shù)據(jù),讓PHP通過(guò)SQL語(yǔ)句將數(shù)據(jù)寫(xiě)入MySQL數(shù)據(jù)庫(kù)指定的表中,比如新建文件 post.php
代碼如下
?php
require_once("conn.php");//引用數(shù)據(jù)庫(kù)鏈接文件
$uname = $_GET['n'];//GET方法為URL參數(shù)傳遞
$psw = $_GET['p'];
$psw=md5($psw);//直接使用MD5加密
$sql = "insert into members(username,password) values ('$uname','$psw')";
mysql_query($sql);//借SQL語(yǔ)句插入數(shù)據(jù)
mysql_close();//關(guān)閉MySQL連接
echo "成功錄入數(shù)據(jù)";
?
測(cè)試頁(yè)面: ;p=i0514
即可向MySQL數(shù)據(jù)庫(kù)hello的members表中插入新的數(shù)據(jù)“cnbruce”到username字段、“i0514”到password字段
補(bǔ)充:讀取表
讀取表中的內(nèi)容,這里我們用while,可以根據(jù)具體情況,用for 或其他的.
代碼如下
while($row = mysql_fetch_array($result))
{
echo "div style="height:24px; line-height:24px; font-weight:bold;""; //排版代碼
echo $row['Topic'] . "br/";
echo "/div"; //排版代碼
連接到一個(gè)?url?地址為localhost?、?端口為?3306?的mysql服務(wù)器上。mysql服務(wù)器的帳號(hào)是"root",密碼是"9999"。mysql?服務(wù)器上有一個(gè)數(shù)據(jù)庫(kù)?ok?,?數(shù)據(jù)庫(kù)里有一個(gè)表?abc。表?abc?一共為兩列,列名分別是?"id"?和?"name"?,將?abc?里的所有數(shù)據(jù)讀出來(lái)。
??
$dbh?=?@mysql_connect("localhost:3306","root","9999");?
/*?定義變量dbh?,?mysql_connect()函數(shù)的意思是連接mysql數(shù)據(jù)庫(kù),?"@"的意思是屏蔽報(bào)錯(cuò)?*/?
if(!$dbh){die("error");}?
/*?die()函數(shù)的意思是將括號(hào)里的字串送到瀏覽器并中斷PHP程式?(Script)。括號(hào)里的參數(shù)為欲送出的字串。?*/?
@mysql_select_db("ok",?$dbh);?
/*?選擇mysql服務(wù)器里的一個(gè)數(shù)據(jù)庫(kù),這里選的數(shù)據(jù)庫(kù)名為?ok?*/?
$q?=?"SELECT?*?FROM?abc";?
/*?定義變量q,?"SELECT?*?FROM?abc"是一個(gè)SQL語(yǔ)句,意思是讀取表abc中的數(shù)據(jù)?*/?
??
br?/?
!--=========?方法一?=========--?
br?/?
??
$rs?=?mysql_query($q,?$dbh);?
/*?定義變量?rs?,函數(shù)mysql_query()的意思是:送出?query?字串供?MySQL?做相關(guān)的處理或者執(zhí)行.由于php是從右往左執(zhí)行的,所以,rs的值是服務(wù)器運(yùn)行mysql_query()函數(shù)后返回的值?*/?
if(!$rs){die("Valid?result!");}?
echo?"table";?
echo?"trtdID/tdtdName/td/tr";?
while($row?=?mysql_fetch_row($rs))?echo?"trtd$row[0]/tdtd$row[1]/td/tr";?
/*?定義量變(數(shù)組)row,并利用while循環(huán),把數(shù)據(jù)一一寫(xiě)出來(lái).??
函數(shù)mysql_fetch_row()的意思是:將查詢結(jié)果$rs單列拆到陣列變數(shù)中.??
$row[0]?和?$row[1]?的位置可以換*/?
echo?"/table";?
??
br?/?
!--=========?方法二?=========--?
br?/?
??
$rs?=?mysql_query($q,?$dbh);?
while($row?=?mysql_fetch_object($rs))?echo?"$row-id?$row-name?br?/";?
/*?id和name可以換位置?*/?
??
br?/?
!--=========?方法三?=========--?
br?/?
??
$rs?=?mysql_query($q,?$dbh);?
while($row?=?mysql_fetch_array($rs))?echo?"$row[id]?$row[name]?br?/";?
/*?id和name可以換位置?*/?
??
!--=========?方法三最快?=========--?
??
@mysql_close($dbh);?
/*?關(guān)閉到mysql數(shù)據(jù)庫(kù)的連接?*/?
?
你可以先把數(shù)據(jù)庫(kù)數(shù)據(jù)讀到一個(gè)數(shù)組里面,比如下面的語(yǔ)句:
$sql='select number from vote';
$res=mysql_query($sql);
$i=1;
while(list($row[$i])=mysql_fetch_row($res)) $i++;
上面的語(yǔ)句執(zhí)行之后,$row[1]是第一條數(shù)據(jù),$row[2]是第二條數(shù)據(jù),……下面的語(yǔ)句輸出網(wǎng)頁(yè)即可:
echo END
這里放網(wǎng)頁(yè)的內(nèi)容,{$row[1]}
直接按照html的語(yǔ)法進(jìn)行書(shū)寫(xiě),{$row[2]}
把你各個(gè){$row[3]}數(shù)值的位置用PHP數(shù)組引用即可。
END;
如果你做的這個(gè)系統(tǒng)規(guī)模不大,數(shù)據(jù)應(yīng)用不頻繁,那么文件系統(tǒng)完全是可以接受的,但如果你的系統(tǒng)規(guī)模比較大,同時(shí)數(shù)據(jù)是頻繁更新和變化的,那么讀寫(xiě)數(shù)據(jù)庫(kù)的效率肯定會(huì)比文件高很多。
1、直接讀文件相比數(shù)據(jù)庫(kù)查詢效率更勝一籌,而且文中還沒(méi)算上連接和斷開(kāi)的時(shí)間。
2、一次讀取的內(nèi)容越大,直接讀文件的優(yōu)勢(shì)會(huì)越明顯(讀文件時(shí)間都是小幅增長(zhǎng),這跟文件存儲(chǔ)的連續(xù)性和簇大小等有關(guān)系),這個(gè)結(jié)果恰恰跟天緣預(yù)料的相反,說(shuō)明MYSQL對(duì)更大文件讀取可能又附加了某些操作(兩次時(shí)間增長(zhǎng)了近30%),如果只是單純的賦值轉(zhuǎn)換應(yīng)該是差異偏小才對(duì)。
3、寫(xiě)文件和INSERT幾乎不用測(cè)試就可以推測(cè)出,數(shù)據(jù)庫(kù)效率只會(huì)更差。
4、很小的配置文件如果不需要使用到數(shù)據(jù)庫(kù)特性,更加適合放到獨(dú)立文件里存取,無(wú)需單獨(dú)創(chuàng)建數(shù)據(jù)表或記錄,很大的文件比如圖片、音樂(lè)等采用文件存儲(chǔ)更為方便,只把路徑或縮略圖等索引信息放到數(shù)據(jù)庫(kù)里更合理一些。
5、PHP上如果只是讀文件,file_get_contents比f(wàn)open、fclose更有效率,不包括判斷存在這個(gè)函數(shù)時(shí)間會(huì)少3秒左右。
6、fetch_row和fetch_object應(yīng)該是從fetch_array轉(zhuǎn)換而來(lái)的,我沒(méi)看過(guò)PHP的源碼,單從執(zhí)行上就可以說(shuō)明fetch_array效率更高,這跟網(wǎng)上的說(shuō)法似乎相反。
PHP代碼連接數(shù)據(jù)庫(kù)通過(guò)
sql
語(yǔ)言操作數(shù)據(jù)去存儲(chǔ)更新刪除查詢數(shù)據(jù),就這么簡(jiǎn)單.