mysql

发布时间:2011-03-21 17:31:45   来源:文档文库   
字号:

MySQL的基本工作步驟

步驟一:

使用mysql_connect( )函數,建立和MySQL伺服器的通道(可能同一部電腦),該通道以連結識別(link identifier)稱之。

$link = mysql_connect("localhost", "mysql_user", "mysql_password");

此處的$link變數在mysql 的函數語法格式以【resource link_identifier】此resource 表變數的型式。

步驟二:

使用mysql_select-db( )函數,選擇步驟一指定伺服器中的資料庫(因可能有多個資料)。

$link = mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db( “myDataBase”, $link); // $link 可省略

mysql_select_db( “myDataBase”);

$myDB = “myDataBase”;

mysql_select_db( $myDB);

步驟三:

使用mysql_query()函數,來執行各種資料庫的操作。操作的內容以SQL語言表之。

如顯示步驟中指定的資料庫中的某一表格(myTable)中所有的內容。

$result = mysql_query (“SELECT * from myTable”);

$result為一指標指向工作結果區(工作表格),在mysql 的函數語法格式以【resource result】此resource 表變數的型式。

步驟四:

使用mysql_free_result函數,從步驟三的工作結果區中,逐列取出資料

$result = mysql_query("SELECT * FROM table1", $link);

$rows = mysql_fetch_array($result);

echo "$rows[“name”], $rows[“sex”] \n";

步驟五:

使用mysql_free_result函數,釋放工作結果區的記憶體空間。

$result = mysql_query (“SELECT * from myTable”);

mysql_free_result($result);

?>

步驟六:

使用mysql_close函數,關閉和伺服機連結。

$link = mysql_connect("localhost", "mysql_user", "mysql_password")

or exit("Could not connect");

print ("Connected successfully");

mysql_close($link);

?>



mysql_close

關閉 MySQL 伺服器連線。

語法:

bool mysql_close ( [resource link_identifier])

傳回值:

布耳變數值(Boolean)

成功回傳 TRUE

失敗回傳 FALSE

內容說明

本函式關閉與 MySQL 資料庫伺服器的連線。若無指定參數 link_identifier 則會關閉最後的一筆連線。用 mysql_pconnect() 連線則無法使用本函式關閉。實際上本函式不是一定需要的,當 PHP 整頁程式結束後,將會自動關閉與資料庫的非永久性 (non-persistent) 連線。成功傳回 true、失敗傳回 false 值。

使用範例

$link = mysql_connect("localhost", "mysql_user", "mysql_password")

or exit("Could not connect");

print ("Connected successfully");

mysql_close($link);

?>

參考

mysql_connect()



mysql_connect

建立和 MySQL 伺服器間的連線。

語法:

resource mysql_connect(string [hostname] [:port], string [username],

string [password]);

傳回值:

伺服器的通道指標,語法以「resource link_identifier」表示之。

內容說明

本函式建立與 MySQL 伺服器的連線。其中所有的參數都可省略。當使用本函式卻不加任何參數時,參數 hostname 的內定值為 localhost、參數 username 的內定值為 PHP 執行行程的擁有者、參數 password 則為空字串 (即沒有密碼)。而參數 hostname 後面可以加冒號與埠號,代表使用那個埠與 MySQL 連接。當然在使用資料庫時,早點使用 mysql_close() 將連線關掉可以節省資源。

使用範例

$link = mysql_connect("localhost", "mysql_user", "mysql_password")

or die("Could not connect");

print ("Connected successfully");

mysql_close($link);

?>

$Database = “myDatadase”;

mysql_connect ("localhost", "kh", "75kh07");

$db = mysql_select_db( $Database );

if ( ! $db ) {

echo "無法開啟資料庫!";

exit;

}

這是一位未具名網友提供的範例 (18-Feb-1999)



$dbh = mysql_connect('localhost:3306','mcclain','standard');

mysql_select_db('admreqs');

$query = "insert into requests(date, request, email, priority,status) values (NOW(),'$description', '$email', '$priority', 'NEW')";

$res = mysql_query($query, $dbh);

$query = "select max(id) from requests";

$res = mysql_query($query, $dbh);

$err = mysql_error();

if($err){

echo "發生錯誤,請通知站長"
;

}

$row = mysql_fetch_row($res);

echo "未來您使用的號碼為: ".$row[0];

?>

參考

mysql_close()



mysql_errno

傳回前一 MySQL 操作的錯誤訊息的代碼。前一 MySQL 操作不含mysql_error() and mysql_errno()二函數。

語法:

int mysql_errno ( [resource link_identifier])

傳回值:

前一MySQL 函數作業錯誤時,傳回錯誤訊息代碼

前一MySQL 函數作業正常時,傳回0

使用範例

mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("nonexistentdb");

echo mysql_errno() . ": " . mysql_error(). "\n";

mysql_select_db("kossu");

mysql_query("SELECT * FROM nonexistenttable");

echo mysql_errno() . ": " . mysql_error() . "\n";

?>

上述案例的輸出為:

1049: Unknown database 'nonexistentdb'

1146: Table 'kossu.nonexistenttable' doesn't exist



mysql_error

傳回前MySQL工作的錯誤訊息內容。前一 MySQL 操作不含mysql_error() and mysql_errno()二函數。

語法:

string mysql_error ( [resource link_identifier])

傳回值:

前一MySQL 函數作業錯誤時,傳回錯誤訊息內容

前一MySQL 函數作業正常時,傳回空字串。

使用範例

mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("nonexistentdb");

echo mysql_errno() . ": " . mysql_error(). "\n";

mysql_select_db("kossu");

mysql_query("SELECT * FROM nonexistenttable");

echo mysql_errno() . ": " . mysql_error() . "\n";

?>

上述案例的輸出為:

1049: Unknown database 'nonexistentdb'

1146: Table 'kossu.nonexistenttable' doesn't exist



mysql_fetch_array

傳回陣列資料。以資料庫的欄位名稱為索引值。

語法:

array mysql_fetch_array(int result, int [result_typ]);

傳回值:

陣列

內容說明

本函式用來將查詢結果 result 拆到陣列變數中。若 result 沒有資料,則傳回 false 值。而本函式可以說是 mysql_fetch_row() 的加強函式,除可以將傳回列及數字索引放入陣列之外,還可以將文字索引放入陣列中。若是好幾個傳回欄位都是相同的文字名稱,則最後一個置入的欄位有效,解決方法是使用數字索引或者為這些同名的欄位 (column) 取別名 (alias)。值得注意的是使用本函式的處理速度其實不會比 mysql_fetch_row() 函式慢,要用哪個函式還是看使用的需求決定。參數 result_typ 是一個常數值,有以下幾種常數 MYSQL_ASSOCMYSQL_NUM MYSQL_BOTH

使用範例



mysql_connect($host,$user,$password);

$result = mysql_db_query("database","select * from table");

while($row = mysql_fetch_array($result)) {

echo $row["user_id"];

echo $row["fullname"];

}

mysql_free_result($result);

?>

$link = mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);

$rows = mysql_fetch_array($result);

echo "$rows[“name”], $rows[“sex”] \n";

?>



mysql_fetch_row

傳回單列的各欄位。以數字為索引值並由 0 開始起。

語法:

array mysql_fetch_row(int result);

傳回值:

陣列 (array)

內容說明

本函式用來將查詢結果 result 之單列拆到陣列變數中。陣列的索引是數字索引,第一個的索引值是 0。若 result 沒有資料,則傳回 false 值。

使用範例



mysql_connect($host,$user,$password);

$result = mysql_db_query("database","select * from table");

while($row = mysql_fetch_row($result)) {

echo $row[0];

echo $row[1];

}

mysql_free_result($result);

?>

$link = mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);

$num_rows = mysql_fetch_rows($result);

echo "$rows[0], $rows[1] \n";

?>

參考

mysql_fetch_array() mysql_fetch_object() mysql_data_seek() mysql_fetch_lengths() mysql_result()



mysql_free_result

釋放工作結果區的記憶體空間。

語法:

bool mysql_free_result ( resource result)

釋放和result識別相關的記憶體空間。

傳回值:

布耳變數值(Boolean)

成功回傳 TRUE

失敗回傳 FALSE

內容說明

當該程式(script)執行完畢,這些空間會自動的解除。除非使用大量的記憶,否則不需執行本 mysql_free_result() 函數。



mysql_insert_id

傳回最後一次使用 INSERT 指令的 ID

語法:

int mysql_insert_id(int [link_identifier]);

傳回:

1. 0 若前一SQL查詢未產生AUTO_INCREMENT值時,故必須碓定使用本mysql_insert_id()函數,緊接著產生AUTO_INCREMENT值函數之後。

2. 上筆的插入記錄的索引值:為前一INSERT查詢,對定義為AUTO_INCREMENT欄位所產生的值。

內容說明

本函式可以得到最後一次使用 INSERT MySQL 資料庫的執行 IDsleibowitz@btcwcu.org (13-May-1999) 指出在 PHP 3.0.7 版用 REPLACE 也和使用 INSERT 一樣,可以使用本函式獲得 ID

若未指定通路識別( link_identifier )時,假設為最後建立的通道。

使用範例

mysql_connect("localhost", "mysql_user", "mysql_password") or

die("could not connect");

mysql_select_db("mydb");

mysql_query("INSERT INTO mytable (product) values ('kossu')");

printf ("Last inserted record has id %d\n", mysql_insert_id());

?>



mysql_list_fields

列出指定資料表的欄位 (field)

語法:

int mysql_list_fields(string database_name, string table_name, int [link_identifier]);

傳回:

整數

內容說明

本函式可以得到指定的資料表的所有欄位。傳回的欄位資訊可以供 mysql_field_flags()mysql_field_len()mysql_field_name() mysql_field_type() 等函式使用。若有錯誤則傳回 -1

使用範例



mysql_num_rows

取得傳回列的數目。

語法:

int mysql_num_rows(int result);

傳回:

整數

內容說明

本函式可以得到傳回列的數目。

常用以動態的產生,資料表的內容數。

使用範例

查詢在table1 內的資料筆數。

$link = mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);

$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

?>



mysql_query

送出一個 query 字串,給MySQL對現用的資料庫執行作業。

語法:

resource mysql_query ( string query [, resource link_identifier [, int result_mode]])

傳回值:

1. query 指令是 UPDATEINSERT DELETE 時,則傳回的值可能是 true 或者 false

2. query 指令是SELECT ,SHOW,EXPLAIN or DESCRIBE等陳述時,則傳回一個指標用以指向工作的結果區(為一二維表格)。指標mysql 的函數語法格式以【resource result】此resource 表變數的型式。

3. joey@samaritan.com (09-Feb-1999) 指出,當傳回 false 時,並不是執行成功但無傳回值,而是查詢的字串有錯誤。

4. 傳回非false的值,僅代表該查詢的語法是合乎文法,但不保證語意是正確的。

內容說明

本函式送出 query 字串供 MySQL 做相關的處理或者執行。若未指定通路識別( link_identifier )時,則程式會自動假設為最後建立的通道。

參數result_mode 為一選項參數,其值有:

1. MYSQL_USE_RESULT

2. MYSQL_STORE_RESULT

預設值為:MYSQL_STORE_RESULT, 即結果(result)是暫存在緩衝區(buffered)內中。.

參見mysql_unbuffered_query() 的另一種相反的作法。

注意:SQL查詢字串不可以分號(;)結束。

使用範例

查詢字串的語法錯誤,傳回FALSE

$result = mysql_query("SELECT * WHERE 1=1")

or die("Invalid query");

?>

例二:若欄位(my_col)不為資料表(my_tbl)的欄位,則回傳FALSE

$result = mysql_query("SELECT my_col FROM my_tbl")

or die ("Invalid query");

?>

參考

mysql_select_db() mysql_connect()



mysql_select_db

MySQL伺服站中,選擇一個資料庫。

語法:

bool mysql_select_db ( string database_name [, resource link_identifier])

傳回值:

布耳變數值(Boolean)

成功回傳 TRUE

失敗回傳 FALSE

內容說明

本函式mysql_select_db() 設定在連結識別(link identifier) 指定的伺服器上的現用的資料庫,以供之後的資料查詢作業 (query) 處理。成功傳回 true,失敗則傳回 false

如果沒有指定連結識別(link identifier),則假設為最後打開的連結【mysql_connect()】。

使用範例

參考

mysql_connect() mysql_pconnect() mysql_query()

本文来源:https://www.2haoxitong.net/k/doc/b1a792ed102de2bd96058891.html

《mysql.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式