連接數(shù)據(jù)庫,有三種方法
1. 常規(guī)方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$con =mysql_connect( $dbhostip , $username , $userpassword ) or die ( "Unable to connect to the MySQL!" ); $db = mysql_select_db( $dbdatabasename , $con ); //執(zhí)行語句 $qres =mysql_query( "SELECT id,GoodsName FROM user" ); //提取一條數(shù)據(jù) 11 $row =mysql_fetch_row( $result ); //mysql_fetch_row只能提取出查詢結(jié)果的第一條記錄 //提取多條記錄 $reslist = array (); $i =0; while ( $row = mysql_fetch_row( $res )){ $reslist [ $i ] = $row ; $i ++; } mysql_close( $con ); |
//mysql_fetch_row 提取的結(jié)果是沒有查詢中的字段名了(也就是沒有鍵id,GoodsName,只有值),如下圖:
//mysql_fetch_assoc 提取的結(jié)果有鍵值,如下圖:
//mysql_fetch_array提取的結(jié)果有鍵值,是前面兩種的綜合,如下圖:
在mysql_connect()、mysql_select_db()等函數(shù)之前使用@(錯(cuò)誤控制運(yùn)算符),可以忽略掉系統(tǒng)產(chǎn)生的錯(cuò)誤信息,然后我們用die()來自定義錯(cuò)誤信息;
對(duì)于mysql_query()函數(shù)的返回值,如果執(zhí)行的語句有返回值(如SELECT、SHOW、DESCRIBE等),則返回相應(yīng)數(shù)據(jù)(成功時(shí))或FALSE(失敗時(shí));如果執(zhí)行的語句沒有返回值(如DELETE、DROP、INSERT、UPDATE等),則返回TRUE(成功時(shí))或FALSE(失敗時(shí))。
2. 面向?qū)ο笮问?/p>
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$db = new mysqli( $dbhostip , $username , $userpassword , $dbdatabasename ); if (mysqli_connect_error()){ echo 'Could not connect to database.' ; exit ; } $result = $db ->query( "SELECT id,GoodsName FROM user" ); $row = $result ->fetch_row(); |
這里用到的是mysqli,意思就是mysql的擴(kuò)展,既可以通過面向過程的方式也可以通過面向?qū)ο蟮姆绞脚c數(shù)據(jù)庫進(jìn)行交互
3. PDO方法
PDO其實(shí)是PHP Database Objects的縮寫,中文即PHP數(shù)據(jù)庫對(duì)象。它提供了一種統(tǒng)一的PHP與數(shù)據(jù)庫交互的方法。
它的優(yōu)勢(shì)在于:只要正確提供數(shù)據(jù)源,余下對(duì)于數(shù)據(jù)庫的基本操作都是一樣的。也就是說,同一段代碼既可以同MySQL交互,也可以和SQLite3交互,當(dāng)然也可以和PostgreSQL進(jìn)行交互,前提是你提供了正確的數(shù)據(jù)源。
連接MySQL的代碼:
1
|
$dsn = 'mysql:host=' . $dbhost . ';dbname=' . $dbdatabase . ';' $dbh = new PDO( $dsn , $username , $userpass ); |
SQLite3:
1
2
3
4
5
6
|
$dsn = 'sqlite3:"D:\sqlite\user.db"' ; $dbh = new PDO( $dsn ); PostgreSQL: $dsn = 'pgsql:host=' . $dbhost . ' port=5432 dbname=' . $dbdatabase . ' user=' . $username . ' password=' . $userpass ; $dbh = new PDO( $dsn ); |
操作 :
1
2
|
$stmt = $dbh ->query( 'SELECT id,name FROM user' ); $row = $stmt ->fetch(); |