十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
先配置數(shù)據(jù)庫------連接數(shù)據(jù)庫--------選擇數(shù)據(jù)庫--------填寫檢索表-------輸出檢索內(nèi)容
10年積累的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有開封免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
第一種解決方法:
一、配置一下數(shù)據(jù)庫:
define("DB_HOST","localhost");//數(shù)據(jù)庫地址,一般為localhost
define("DB_USER","root");//數(shù)據(jù)庫用戶名
define("DB_PSW","");//數(shù)據(jù)庫密碼
define("DB_DB","databasename");//需要操作的數(shù)據(jù)庫
二、連接數(shù)據(jù)庫:
$conn = mysql_connect(DB_HOST,DB_USER,DB_PSW) or die
三、選擇數(shù)據(jù)庫:
mysql_select_db(DB_DB,$conn) or die
四、檢索表:(填寫tablename)
$result = mysql_query("select * from tablename") or die
五、輸出檢索的內(nèi)容:
while ($row = mysql_fetch_row($result)){foreach($row as $data){ ? ?echo $data.' ';} ? ?echo 'br。
如果你做的這個系統(tǒng)規(guī)模不大,數(shù)據(jù)應(yīng)用不頻繁,那么文件系統(tǒng)完全是可以接受的,但如果你的系統(tǒng)規(guī)模比較大,同時數(shù)據(jù)是頻繁更新和變化的,那么讀寫數(shù)據(jù)庫的效率肯定會比文件高很多。
大概的基本流程如下:
連接數(shù)據(jù)庫,再加一個判斷。
選擇數(shù)據(jù)庫
讀取表
輸出表中數(shù)據(jù)
下面是代碼:
?php
$con = mysql_connect("localhost","root","abc123");
/* localhost 是服務(wù)器 root 是用戶名?abc123 是密碼*/?
if (!$con)
{
die("數(shù)據(jù)庫服務(wù)器連接失敗");
}
/*?這就是一個邏輯非判斷,如果錯誤就輸出括號里的字符串 */?
@mysql_select_db("a",?$con);?
/*?選擇mysql服務(wù)器里的一個數(shù)據(jù)庫,假設(shè)你的數(shù)據(jù)庫名為?a*/
$sql?=?"SELECT?*?FROM qq";?
/* 定義變量sql,?"SELECT?*?FROM?qq" 是SQL指令,表示選取表qq中的數(shù)據(jù)?*/
$result = mysql_query($sql); //執(zhí)行SQL語句,獲得結(jié)果集
/*下面就是選擇性的輸出打印了,由于不清楚你的具體情況給你個表格打印吧*/
//打印表格?
echo "table border=1";?
while( $row = mysql_fetch_array($result) )
/*逐行獲取結(jié)果集中的記錄,得到數(shù)組row?*/
{ ?
/*數(shù)組row的下標(biāo)對應(yīng)著數(shù)據(jù)庫中的字段值?*/
$id = $row['id'];?
$name = $row['name'];?
$sex = $row['sex'];?
echo "tr";?
echo "td$id/td";?
echo "td$name/td";?
echo "td$sex/td";?
echo "/tr";?
}?
echo "table /";
?
如果你的switch是表頭,就定義這個表頭字段,然后輸出。
PHP向MySQL數(shù)據(jù)庫中寫入數(shù)據(jù)有三個步驟:
1,PHP和MySQL建立連接關(guān)系
2,打開MySQL數(shù)據(jù)庫
3,接受頁面數(shù)據(jù),PHP錄入到指定的表中
1、2兩步可直接使用一個數(shù)據(jù)庫鏈接文件即可:conn.php
代碼如下
?php
mysql_connect("localhost","root","");//連接MySQL
mysql_select_db("hello");//選擇數(shù)據(jù)庫
?
當(dāng)然,前提是已經(jīng)安裝WEB服務(wù)器、PHP和MySQL,并且建立MySQL表“cnbruce”
mysql_connect()中三個參數(shù)分別為MySQL地址、MySQL用戶名和MySQL密碼
然后就是通過WEB頁面?zhèn)鬟f數(shù)據(jù),讓PHP通過SQL語句將數(shù)據(jù)寫入MySQL數(shù)據(jù)庫指定的表中,比如新建文件 post.php
代碼如下
?php
require_once("conn.php");//引用數(shù)據(jù)庫鏈接文件
$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語句插入數(shù)據(jù)
mysql_close();//關(guān)閉MySQL連接
echo "成功錄入數(shù)據(jù)";
?
測試頁面: ;p=i0514
即可向MySQL數(shù)據(jù)庫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"; //排版代碼
1、直接讀文件相比數(shù)據(jù)庫查詢效率更勝一籌,而且文中還沒算上連接和斷開的時間。
2、一次讀取的內(nèi)容越大,直接讀文件的優(yōu)勢會越明顯(讀文件時間都是小幅增長,這跟文件存儲的連續(xù)性和簇大小等有關(guān)系),這個結(jié)果恰恰跟天緣預(yù)料的相反,說明MYSQL對更大文件讀取可能又附加了某些操作(兩次時間增長了近30%),如果只是單純的賦值轉(zhuǎn)換應(yīng)該是差異偏小才對。
3、寫文件和INSERT幾乎不用測試就可以推測出,數(shù)據(jù)庫效率只會更差。
4、很小的配置文件如果不需要使用到數(shù)據(jù)庫特性,更加適合放到獨(dú)立文件里存取,無需單獨(dú)創(chuàng)建數(shù)據(jù)表或記錄,很大的文件比如圖片、音樂等采用文件存儲更為方便,只把路徑或縮略圖等索引信息放到數(shù)據(jù)庫里更合理一些。
5、PHP上如果只是讀文件,file_get_contents比fopen、fclose更有效率,不包括判斷存在這個函數(shù)時間會少3秒左右。
6、fetch_row和fetch_object應(yīng)該是從fetch_array轉(zhuǎn)換而來的,我沒看過PHP的源碼,單從執(zhí)行上就可以說明fetch_array效率更高,這跟網(wǎng)上的說法似乎相反。
連接到一個?url?地址為localhost?、?端口為?3306?的mysql服務(wù)器上。mysql服務(wù)器的帳號是"root",密碼是"9999"。mysql?服務(wù)器上有一個數(shù)據(jù)庫?ok?,?數(shù)據(jù)庫里有一個表?abc。表?abc?一共為兩列,列名分別是?"id"?和?"name"?,將?abc?里的所有數(shù)據(jù)讀出來。
??
$dbh?=?@mysql_connect("localhost:3306","root","9999");?
/*?定義變量dbh?,?mysql_connect()函數(shù)的意思是連接mysql數(shù)據(jù)庫,?"@"的意思是屏蔽報(bào)錯?*/?
if(!$dbh){die("error");}?
/*?die()函數(shù)的意思是將括號里的字串送到瀏覽器并中斷PHP程式?(Script)。括號里的參數(shù)為欲送出的字串。?*/?
@mysql_select_db("ok",?$dbh);?
/*?選擇mysql服務(wù)器里的一個數(shù)據(jù)庫,這里選的數(shù)據(jù)庫名為?ok?*/?
$q?=?"SELECT?*?FROM?abc";?
/*?定義變量q,?"SELECT?*?FROM?abc"是一個SQL語句,意思是讀取表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ù)一一寫出來.??
函數(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ù)庫的連接?*/?
?