連接數據庫,有三種方法
1. 常規方式:
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 ); //執行語句 $qres =mysql_query( "SELECT id,GoodsName FROM user" ); //提取一條數據 11 $row =mysql_fetch_row( $result ); //mysql_fetch_row只能提取出查詢結果的第一條記錄 //提取多條記錄 $reslist = array (); $i =0; while ( $row = mysql_fetch_row( $res )){ $reslist [ $i ] = $row ; $i ++; } mysql_close( $con ); |
//mysql_fetch_row 提取的結果是沒有查詢中的字段名了(也就是沒有鍵id,GoodsName,只有值),如下圖:
//mysql_fetch_assoc 提取的結果有鍵值,如下圖:
//mysql_fetch_array提取的結果有鍵值,是前面兩種的綜合,如下圖:
在mysql_connect()、mysql_select_db()等函數之前使用@(錯誤控制運算符),可以忽略掉系統產生的錯誤信息,然后我們用die()來自定義錯誤信息;
對于mysql_query()函數的返回值,如果執行的語句有返回值(如SELECT、SHOW、DESCRIBE等),則返回相應數據(成功時)或FALSE(失敗時);如果執行的語句沒有返回值(如DELETE、DROP、INSERT、UPDATE等),則返回TRUE(成功時)或FALSE(失敗時)。
2. 面向對象形式
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的擴展,既可以通過面向過程的方式也可以通過面向對象的方式與數據庫進行交互
3. PDO方法
PDO其實是PHP Database Objects的縮寫,中文即PHP數據庫對象。它提供了一種統一的PHP與數據庫交互的方法。
它的優勢在于:只要正確提供數據源,余下對于數據庫的基本操作都是一樣的。也就是說,同一段代碼既可以同MySQL交互,也可以和SQLite3交互,當然也可以和PostgreSQL進行交互,前提是你提供了正確的數據源。
連接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(); |