PHP操作mysql函數(shù)詳解,mysql和php交互函數(shù)
更新時(shí)間:2011年05月19日 00:48:01 作者:
PHP操作mysql函數(shù)詳解,mysql和php交互函數(shù)實(shí)現(xiàn)代碼,需要的朋友可以參考下。
1. 建立和關(guān)閉連接
1) mysql_connect()
resource mysql_connect([string hostname [:port][:/path/to/socket][,string username] [,string password]])
所有參數(shù)都是可選的
舉例:
@mysql_connect(“l(fā)ocalhost”, “user”, “password”)
or die(“Could not connect to mysql server!”);
注意,@符號(hào)表示禁止失敗嘗試導(dǎo)致的任何錯(cuò)誤信息,用戶將看到的是die()中指定的錯(cuò)誤信息.
注意,當(dāng)與多個(gè)mysql進(jìn)行連接時(shí),必須指定每個(gè)連接的鏈接ID,如下:
$link1 = @mysql_connect(“server1″, “user”, “password”)
or die(“Could not connect to mysql server!”);
$link2 = @mysql_connect(“server2″, “user”, “password”)
or die(“Could not connect to mysql server!”);
2) mysql_pconnect()
resource mysql_pconnect([string hostname [:port][:/path/to/socket][,string username] [,string password]])
與mysql_connect()不同的是:會(huì)首先查找現(xiàn)有鏈接,不存在時(shí)才創(chuàng)建.
注意,不需要顯示關(guān)閉連接(mysql_close()),因?yàn)檫B接將放在池中,所以叫持久連接.
3) mysql_close()
boolean mysql_close([resource link_id])
關(guān)閉連接不是必須的,因?yàn)榭梢杂蒻ysql的垃圾回收來(lái)處理.
如果沒(méi)有指定link_id,則關(guān)閉最近的鏈接.
2. 選擇數(shù)據(jù)庫(kù)
mysql_select_db()
boolean mysql_select_db(string db_name [, resource link_id])
3. 查詢MySql
1) mysql_query()
resource mysql_query(string query [,resource link_id])
負(fù)責(zé)執(zhí)行query.
2) mysql_db_query()
resource mysql_db_query(string database, string query [, resource link_id])
等價(jià)于mysql_select_db() + mysql_query(),從參數(shù)中就可以清楚的看出來(lái).
4. 獲取和顯示數(shù)據(jù)
1) mysql_result()
mixed mysql_result(resource result_set, int row [,mixed field])
從result_set 的指定row 中獲取一個(gè)field 的數(shù)據(jù). 簡(jiǎn)單但是效率低.
舉例:
$link1 = @mysql_connect(“server1″, “webuser”, “password”)
or die(“Could not connect to mysql server!”);
@mysql_select_db(“company”) or die(“Could not select database!”);
$query = “select id, name from product order by name”;
$result = mysql_query($query);
$id = mysql_result($result, 0, “id”);
$name = mysql_result($result, 0, “name”);
mysql_close();
注意,上述代碼只是輸出結(jié)果集中的第一條數(shù)據(jù)的字段值,如果要輸出所有記錄,需要循環(huán)處理.
…
for ($i = 0; $i <= mysql_num_rows($result); $i++)
{
$id = mysql_result($result, 0, “id”);
$name = mysql_result($result, 0, “name”);
echo “Product: $name ($id)”;
}
…
注意,如果查詢字段名是別名,則mysql_result中就使用別名.
2) mysql_fetch_row()
array mysql_fetch_row(resource result_set)
從result_set中獲取整行,把數(shù)據(jù)放入數(shù)組中.
舉例(注意和list 的巧妙配合):
…
$query = “select id, name from product order by name”;
$result = mysql_query($query);
while(list($id, $name) = mysql_fetch_row($result)) {
echo “Product: $name ($id)”;
}
…
3) mysql_fetch_array()
array mysql_fetch_array(resource result_set [,int result_type])
mysql_fetch_row()的增強(qiáng)版.
將result_set的每一行獲取為一個(gè)關(guān)聯(lián)數(shù)組或/和數(shù)值索引數(shù)組.
默認(rèn)獲取兩種數(shù)組,result_type可以設(shè)置:
MYSQL_ASSOC:返回關(guān)聯(lián)數(shù)組,字段名=>字段值
MYSQL_NUM:返回?cái)?shù)值索引數(shù)組.
MYSQL_BOTH:獲取兩種數(shù)組.因此每個(gè)字段可以按索引偏移引用,也可以按字段名引用.
舉例:
…
$query = “select id, name from product order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$name = $row['name'];//或者 $name = $row[1];
$name = $row['id'];//或者 $name = $row[0];
echo “Product: $name ($id)”;
}
…
4) mysql_fetch_assoc()
array mysql_fetch_assoc(resource result_set)
相當(dāng)于 mysql_fetch_array($result, MYSQL_ASSOC)
5) mysql_fetch_object()
object mysql_fetch_object(resource result_set)
和mysql_fetch_array()功能一樣,不過(guò)返回的不是數(shù)組,而是一個(gè)對(duì)象.
舉例:
…
$query = “select id, name from product order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_object($result)) {
$name = $row->name;
$name = $row->id;
echo “Product: $name ($id)”;
}
…
5. 所選擇的記錄和受影響的記錄
1) mysql_num_rows()
int mysql_num_rows(resource result_set)
返回result_set中的行數(shù).
注意,mysql_num_rows()只在確定select語(yǔ)句查詢獲得的記錄數(shù)有效,如果要獲取insert/updata/delete查詢影響的記錄數(shù),需要使用mysql_affected_rows().
2) mysql_affected_rows()
int mysql_affected_rows([resource link_id])
獲取insert/updata/delete查詢影響的記錄數(shù)
注意,不需要輸入?yún)?shù),默認(rèn)使用最近建立的數(shù)據(jù)庫(kù)連接的最近結(jié)果.可以使用可選參數(shù)link_id來(lái)選擇數(shù)據(jù)庫(kù)連接.
6. 獲取數(shù)據(jù)庫(kù)和表的信息
1) mysql_list_dbs()
resource mysql_list_dbs([resource link_id])
獲取服務(wù)器上所有數(shù)據(jù)庫(kù)名稱.
舉例:
mysql_connect(“l(fā)ocalhost”, “name”,”pwd”);
$dbs = mysql_list_dbs();
while (list($db) = mysql_fetch_row(dbs)) {
echo “$db <br>”;
}
注意,輸出結(jié)果與使用的用戶權(quán)限相關(guān).
2) mysql_db_name()
string mysql_db_name(resource result_set, interger index)
獲取在mysql_list_dbs()返回的result_set中位置為index的數(shù)據(jù)庫(kù)名.
3) mysql_list_tables()
resource mysql_list_tables(string database [,resource link_id])
獲取database中的所有表名.
4) mysql_tablename()
string mysql_tablename(resource result_set, interger index)
獲取mysql_list_tables()返回的result_set中位置為index的表名.
在學(xué)習(xí)PHP的COM 和 .Net(Windows)函數(shù)的時(shí)候,發(fā)現(xiàn)了一個(gè)通過(guò)COM操作SQL SERVER的例子,查找了相關(guān)的資料,于是就有了這篇PHP連接ACCESS的文章,相信網(wǎng)上已經(jīng)很多了,還是貼在這里吧。
我的機(jī)器環(huán)境:WIN2000,APACHE2,PHP Version 5.1.0RC1
<?php
$conn = new COM(“ADODB.Connection”) or die(“Cannot start ADODB.Connection”);
$conn->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\php5\\netBook.mdb”);
$rs = $conn->Execute(“select * from manage”); // 記錄集
$num_columns = $rs->Fields->Count();
echo $num_columns . “<br />\n”;
for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $rs->Fields($i);
}
$rowcount = 0;
while (!$rs->EOF) {
for ($i=0; $i < $num_columns; $i++)
{
echo htmlspecialchars($fld[$i]->value) . “\t”;
}
echo “<br />\n”;
$rowcount++; // rowcount 自增
$rs->MoveNext();
}
$rs->Close(); //關(guān)閉數(shù)據(jù)集
$conn->Close();
?>
1) mysql_connect()
resource mysql_connect([string hostname [:port][:/path/to/socket][,string username] [,string password]])
所有參數(shù)都是可選的
舉例:
@mysql_connect(“l(fā)ocalhost”, “user”, “password”)
or die(“Could not connect to mysql server!”);
注意,@符號(hào)表示禁止失敗嘗試導(dǎo)致的任何錯(cuò)誤信息,用戶將看到的是die()中指定的錯(cuò)誤信息.
注意,當(dāng)與多個(gè)mysql進(jìn)行連接時(shí),必須指定每個(gè)連接的鏈接ID,如下:
$link1 = @mysql_connect(“server1″, “user”, “password”)
or die(“Could not connect to mysql server!”);
$link2 = @mysql_connect(“server2″, “user”, “password”)
or die(“Could not connect to mysql server!”);
2) mysql_pconnect()
resource mysql_pconnect([string hostname [:port][:/path/to/socket][,string username] [,string password]])
與mysql_connect()不同的是:會(huì)首先查找現(xiàn)有鏈接,不存在時(shí)才創(chuàng)建.
注意,不需要顯示關(guān)閉連接(mysql_close()),因?yàn)檫B接將放在池中,所以叫持久連接.
3) mysql_close()
boolean mysql_close([resource link_id])
關(guān)閉連接不是必須的,因?yàn)榭梢杂蒻ysql的垃圾回收來(lái)處理.
如果沒(méi)有指定link_id,則關(guān)閉最近的鏈接.
2. 選擇數(shù)據(jù)庫(kù)
mysql_select_db()
boolean mysql_select_db(string db_name [, resource link_id])
3. 查詢MySql
1) mysql_query()
resource mysql_query(string query [,resource link_id])
負(fù)責(zé)執(zhí)行query.
2) mysql_db_query()
resource mysql_db_query(string database, string query [, resource link_id])
等價(jià)于mysql_select_db() + mysql_query(),從參數(shù)中就可以清楚的看出來(lái).
4. 獲取和顯示數(shù)據(jù)
1) mysql_result()
mixed mysql_result(resource result_set, int row [,mixed field])
從result_set 的指定row 中獲取一個(gè)field 的數(shù)據(jù). 簡(jiǎn)單但是效率低.
舉例:
復(fù)制代碼 代碼如下:
$link1 = @mysql_connect(“server1″, “webuser”, “password”)
or die(“Could not connect to mysql server!”);
@mysql_select_db(“company”) or die(“Could not select database!”);
$query = “select id, name from product order by name”;
$result = mysql_query($query);
$id = mysql_result($result, 0, “id”);
$name = mysql_result($result, 0, “name”);
mysql_close();
注意,上述代碼只是輸出結(jié)果集中的第一條數(shù)據(jù)的字段值,如果要輸出所有記錄,需要循環(huán)處理.
復(fù)制代碼 代碼如下:
…
for ($i = 0; $i <= mysql_num_rows($result); $i++)
{
$id = mysql_result($result, 0, “id”);
$name = mysql_result($result, 0, “name”);
echo “Product: $name ($id)”;
}
…
注意,如果查詢字段名是別名,則mysql_result中就使用別名.
2) mysql_fetch_row()
array mysql_fetch_row(resource result_set)
從result_set中獲取整行,把數(shù)據(jù)放入數(shù)組中.
舉例(注意和list 的巧妙配合):
復(fù)制代碼 代碼如下:
…
$query = “select id, name from product order by name”;
$result = mysql_query($query);
while(list($id, $name) = mysql_fetch_row($result)) {
echo “Product: $name ($id)”;
}
…
3) mysql_fetch_array()
array mysql_fetch_array(resource result_set [,int result_type])
mysql_fetch_row()的增強(qiáng)版.
將result_set的每一行獲取為一個(gè)關(guān)聯(lián)數(shù)組或/和數(shù)值索引數(shù)組.
默認(rèn)獲取兩種數(shù)組,result_type可以設(shè)置:
MYSQL_ASSOC:返回關(guān)聯(lián)數(shù)組,字段名=>字段值
MYSQL_NUM:返回?cái)?shù)值索引數(shù)組.
MYSQL_BOTH:獲取兩種數(shù)組.因此每個(gè)字段可以按索引偏移引用,也可以按字段名引用.
舉例:
復(fù)制代碼 代碼如下:
…
$query = “select id, name from product order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$name = $row['name'];//或者 $name = $row[1];
$name = $row['id'];//或者 $name = $row[0];
echo “Product: $name ($id)”;
}
…
4) mysql_fetch_assoc()
array mysql_fetch_assoc(resource result_set)
相當(dāng)于 mysql_fetch_array($result, MYSQL_ASSOC)
5) mysql_fetch_object()
object mysql_fetch_object(resource result_set)
和mysql_fetch_array()功能一樣,不過(guò)返回的不是數(shù)組,而是一個(gè)對(duì)象.
舉例:
復(fù)制代碼 代碼如下:
…
$query = “select id, name from product order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_object($result)) {
$name = $row->name;
$name = $row->id;
echo “Product: $name ($id)”;
}
…
5. 所選擇的記錄和受影響的記錄
1) mysql_num_rows()
int mysql_num_rows(resource result_set)
返回result_set中的行數(shù).
注意,mysql_num_rows()只在確定select語(yǔ)句查詢獲得的記錄數(shù)有效,如果要獲取insert/updata/delete查詢影響的記錄數(shù),需要使用mysql_affected_rows().
2) mysql_affected_rows()
int mysql_affected_rows([resource link_id])
獲取insert/updata/delete查詢影響的記錄數(shù)
注意,不需要輸入?yún)?shù),默認(rèn)使用最近建立的數(shù)據(jù)庫(kù)連接的最近結(jié)果.可以使用可選參數(shù)link_id來(lái)選擇數(shù)據(jù)庫(kù)連接.
6. 獲取數(shù)據(jù)庫(kù)和表的信息
1) mysql_list_dbs()
resource mysql_list_dbs([resource link_id])
獲取服務(wù)器上所有數(shù)據(jù)庫(kù)名稱.
舉例:
復(fù)制代碼 代碼如下:
mysql_connect(“l(fā)ocalhost”, “name”,”pwd”);
$dbs = mysql_list_dbs();
while (list($db) = mysql_fetch_row(dbs)) {
echo “$db <br>”;
}
注意,輸出結(jié)果與使用的用戶權(quán)限相關(guān).
2) mysql_db_name()
string mysql_db_name(resource result_set, interger index)
獲取在mysql_list_dbs()返回的result_set中位置為index的數(shù)據(jù)庫(kù)名.
3) mysql_list_tables()
resource mysql_list_tables(string database [,resource link_id])
獲取database中的所有表名.
4) mysql_tablename()
string mysql_tablename(resource result_set, interger index)
獲取mysql_list_tables()返回的result_set中位置為index的表名.
在學(xué)習(xí)PHP的COM 和 .Net(Windows)函數(shù)的時(shí)候,發(fā)現(xiàn)了一個(gè)通過(guò)COM操作SQL SERVER的例子,查找了相關(guān)的資料,于是就有了這篇PHP連接ACCESS的文章,相信網(wǎng)上已經(jīng)很多了,還是貼在這里吧。
我的機(jī)器環(huán)境:WIN2000,APACHE2,PHP Version 5.1.0RC1
復(fù)制代碼 代碼如下:
<?php
$conn = new COM(“ADODB.Connection”) or die(“Cannot start ADODB.Connection”);
$conn->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\php5\\netBook.mdb”);
$rs = $conn->Execute(“select * from manage”); // 記錄集
$num_columns = $rs->Fields->Count();
echo $num_columns . “<br />\n”;
for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $rs->Fields($i);
}
$rowcount = 0;
while (!$rs->EOF) {
for ($i=0; $i < $num_columns; $i++)
{
echo htmlspecialchars($fld[$i]->value) . “\t”;
}
echo “<br />\n”;
$rowcount++; // rowcount 自增
$rs->MoveNext();
}
$rs->Close(); //關(guān)閉數(shù)據(jù)集
$conn->Close();
?>
您可能感興趣的文章:
- PHP中的MYSQL常用函數(shù)(php下操作數(shù)據(jù)庫(kù)必備)
- 解析php session_set_save_handler 函數(shù)的用法(mysql)
- PHP函數(shù)addslashes和mysql_real_escape_string的區(qū)別
- php Mysql日期和時(shí)間函數(shù)集合
- php empty函數(shù)判斷mysql表單是否為空
- PHP訪問(wèn)MYSQL數(shù)據(jù)庫(kù)封裝類(附函數(shù)說(shuō)明)
- PHP持久連接mysql_pconnect()函數(shù)使用介紹
- php中使用session_set_save_handler()函數(shù)把session保存到MySQL數(shù)據(jù)庫(kù)實(shí)例
- Zend studio for eclipse中使php可以調(diào)用mysql相關(guān)函數(shù)的設(shè)置方法
- php mysql_real_escape_string函數(shù)用法與實(shí)例教程
- PHP mysqli_free_result()與mysqli_fetch_array()函數(shù)詳解
- PHP_MySQL教程-第三天 基本函數(shù)
- PHP操作MySQL的mysql_fetch_* 函數(shù)的常見(jiàn)用法教程
- php mysql_list_dbs()函數(shù)用法示例
相關(guān)文章
如何對(duì)PHP程序中的常見(jiàn)漏洞進(jìn)行攻擊
如何對(duì)PHP程序中的常見(jiàn)漏洞進(jìn)行攻擊...2006-10-10一步一步學(xué)習(xí)PHP(3) php 函數(shù)
相信每個(gè)人在學(xué)習(xí)PHP之前至少都有著一定的C語(yǔ)言,或者是C++/Java/C#等其他語(yǔ)言的基礎(chǔ),所以在這里也不從頭開(kāi)始說(shuō)起,只是來(lái)談?wù)凱HP方法的獨(dú)特之處。2010-02-02在線競(jìng)拍系統(tǒng)的PHP實(shí)現(xiàn)框架(二)
在線競(jìng)拍系統(tǒng)的PHP實(shí)現(xiàn)框架(二)...2006-10-10