以mysql_query()函數(shù)作為教程的基礎(chǔ)前提,我們先來(lái)看一下mysql_query()的用法:
mysql_query()函數(shù)
PHP MySQL 函數(shù)庫(kù)中,mysql_query() 函數(shù)用于向 MySQL 發(fā)送并執(zhí)行 SQL 語(yǔ)句。
對(duì)于沒有數(shù)據(jù)返回結(jié)果集的 SQL ,如 UPDATE、DELETE 等在執(zhí)行成功時(shí)返回 TRUE,出錯(cuò)時(shí)返回 FALSE;對(duì)于 SELECT,SHOW,EXPLAIN 或 DESCRIBE 語(yǔ)句返回一個(gè)資源標(biāo)識(shí)符,如果查詢執(zhí)行不正確則返回 FALSE。
語(yǔ)法:
1
|
resource mysql_query( string query [, resource connection ] ) |
參數(shù)說(shuō)明:
提示
如果沒有打開的連接,本函數(shù)會(huì)嘗試無(wú)參數(shù)調(diào)用 mysql_connect() 函數(shù)來(lái)建立一個(gè)連接
對(duì)于返回?cái)?shù)據(jù)集的查詢,就算返回結(jié)果為0(即沒有符合查詢條件的記錄),返回的仍然是資源標(biāo)示符而不是 FALSE
例子1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<php $conn = @mysql_connect( "localhost" , "root" , "root123" ); if (! $conn ){ die ( "連接數(shù)據(jù)庫(kù)失敗:" . mysql_error()); } mysql_select_db( "test" , $conn ); $result = mysql_query( "SELECT * WHERE 1=1" ) or die ( "無(wú)效查詢: " . mysql_error()); ?> 該例子查詢語(yǔ)句在 SQL 語(yǔ)法上有錯(cuò)誤,因此 mysql_query() 執(zhí)行失敗并返回 FALSE 。 例子2: <php $conn = @mysql_connect( "localhost" , "root" , "root123" ); if (! $conn ){ die ( "連接數(shù)據(jù)庫(kù)失敗:" . mysql_error()); } mysql_select_db( "test" , $conn ); mysql_query( "set names 'gbk'" ); //為避免中文亂碼做入庫(kù)編碼轉(zhuǎn)換 $password = md5( "123456" ); //原始密碼 12345 經(jīng)過(guò)加密后得到加密后密碼 $regdate = time(); //得到時(shí)間戳 $sql = "INSERT INTO user(username, password, email, regdate)VALUES( '小王' , '$password' , if (!mysql_query( $sql , $conn )){ echo "添加數(shù)據(jù)失敗:" .mysql_error(); } else { echo "添加數(shù)據(jù)成功!" ; } ?> |
該例子向 user 表寫入數(shù)據(jù),成功返回 TRUE ,否則返回 FALSE(用 ! 符號(hào)判斷)。
Create Database 創(chuàng)建數(shù)據(jù)庫(kù)
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE 語(yǔ)法用于創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
語(yǔ)法:
1
|
CREATE DATABASE db_name |
PHP MySQL 函數(shù)庫(kù)中,mysql_query() 函數(shù)用于向 MySQL 發(fā)送并執(zhí)行 SQL 語(yǔ)句。
創(chuàng)建一個(gè)名為 testdb 的數(shù)據(jù)庫(kù):
1
2
3
4
5
6
7
8
9
10
11
|
<?php $conn = @mysql_connect( "localhost" , "root" , "root1234" ); if (!$conn){ die( "連接數(shù)據(jù)庫(kù)失敗:" . mysql_error()); } if (@mysql_query( "CREATE DATABASE testdb" ,$conn)){ echo "創(chuàng)建數(shù)據(jù)庫(kù)成功!" ; } else { echo "創(chuàng)建數(shù)據(jù)庫(kù)失敗:" . mysql_error(); } ?> |
提示
創(chuàng)建數(shù)據(jù)庫(kù)需要有對(duì)應(yīng)的用戶權(quán)限,如root用戶
在實(shí)際的虛擬主機(jī)空間中,虛擬主機(jī)商通常已經(jīng)創(chuàng)建好了對(duì)應(yīng)的數(shù)據(jù)庫(kù),故上述例子不一定運(yùn)行成功
選擇數(shù)據(jù)庫(kù)
要對(duì)數(shù)據(jù)庫(kù)或表執(zhí)行操作時(shí),需要選擇一個(gè)數(shù)據(jù)庫(kù)。mysql_select_db() 用于選擇一個(gè)數(shù)據(jù)庫(kù),如果成功,則該函數(shù)返回 true,如果失敗則返回 false。
語(yǔ)法:
1
|
bool mysql_select_db( string db_name [, resource connection ] ) |
參數(shù)說(shuō)明:
具體使用見下面創(chuàng)建數(shù)據(jù)表例子。
創(chuàng)建數(shù)據(jù)表
創(chuàng)建數(shù)據(jù)表 SQL 語(yǔ)法如下:
1
2
3
4
5
6
7
|
CREATE TABLE table_name ( column1 data_type, column2 data_type, column3 data_type, ....... ) |
上述語(yǔ)法中,column為字段名,后面為數(shù)據(jù)類型。
創(chuàng)建一個(gè)名為 user 的表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php $conn = @mysql_connect( "localhost" , "root" , "root1234" ); if (! $conn ){ die ( "連接數(shù)據(jù)庫(kù)失敗:" . mysql_error()); } //選擇數(shù)據(jù)庫(kù) mysql_select_db( "test" , $conn ); //創(chuàng)建數(shù)據(jù)表 SQL $sql = "CREATE TABLE user ( uid mediumint(8), username varchar(20), password char(32), email varchar(40), regdate int(10) )"; if (!mysql_query( $sql , $conn )){ echo "創(chuàng)建數(shù)據(jù)表失敗:" . mysql_error(); } else { echo "創(chuàng)建數(shù)據(jù)表成功!" ; } ?> |
在該例子中,分為 3 個(gè)執(zhí)行步驟:
-
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)鏈接
-
使用 mysql_select_db() 函數(shù)選擇容納該表的數(shù)據(jù)庫(kù)
-
使用 mysql_query() 函數(shù)創(chuàng)建數(shù)據(jù)表
在該例子中創(chuàng)建的表有4個(gè)字段,并指定了對(duì)應(yīng)的數(shù)據(jù)對(duì)象類型。
建表原則
一般來(lái)說(shuō),創(chuàng)建數(shù)據(jù)表有如下注意事項(xiàng):
原始記錄數(shù)據(jù)與表的對(duì)應(yīng)關(guān)系
表名和字段名應(yīng)遵循命名語(yǔ)法且應(yīng)該明確含義
指定字段的數(shù)據(jù)類型
指定字段的其他如是否非空、是否有默認(rèn)值等屬性
定義表的屬性如主外鍵、約束、索引等
與其他表的關(guān)系
限于篇幅且為控制教程難易度,在此不展開過(guò)多討論。
提示
這個(gè)建表樣例只是為了演示基本的建表語(yǔ)法,并不完善。實(shí)際生產(chǎn)當(dāng)中,我們還需要給表和字段指定更多的屬性。