PHP進階(第七彈:數據庫操作)

PHP通過安裝相應的擴展來實現數據庫操作,MsSQL,MySQL,Oracle,PostgreSQL等數據庫都能支持。常用的LAMP架構指的是:Linux、Apache、Mysql、PHP,因此Mysql數據庫在PHP中的應用最爲廣泛。

if (function_exists('mysql_connect')) {
    echo 'Mysql擴展已經安裝';
}

數據庫擴展

Mysql常用的擴展有原生的mysql庫,也可以使用增強版的mysqli擴展,還可以使用PDO進行連接與操作。

mysql擴展進行數據庫連接的方法:

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

mysqli擴展:

$link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');

PDO擴展:

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'mysql_user';
$password = 'mysql_password';
$dbh = new PDO($dsn, $user, $password);

連接MySql數據庫

如:

$host = '127.0.0.1';
$user = 'admin';
$pass = '';
// 連接數據庫
$link = mysql_connect($host, $user, $pass);
// 選擇數據庫
mysql_select_db('testdb');
// 設置一下當前連接使用的字符編碼,一般使用utf8編碼。
mysql_query("set names 'utf8'");

查詢操作

// 發送查詢指令
$res = mysql_query('select * from user limit 1');
// 對於查詢類的語句會返回一個資源句柄(resource),可以通過該資源獲取查詢結果集中的數據。
$row = mysql_fetch_array($res);
var_dump($row);
// PHP默認使用最近的數據庫連接執行查詢,但如果存在多個連接的情況,則可以通過參數指定連接。
// $res = mysql_query('select * from user limit 1', $link1);

PHP有多個函數可以獲取數據集中的一行數據,最常用的是mysql_fetch_array,如上例。

可以通過設定參數MYSQL_NUM只獲取數字索引數組,等同於mysql_fetch_row,如果設定參數爲MYSQL_ASSOC則只獲取關聯索引數組,等同於mysql_fetch_assoc函數。

$row = mysql_fetch_row($result);
$row = mysql_fetch_array($result, MYSQL_NUM);
$row = mysql_fetch_assoc($result);
$row = mysql_fetch_array($result, MYSQL_ASSOC);

插入操作

// 執行插入操作
$id = '10'
$name = 'tom';
$sql = "insert into user(user_id, user_name) values('$id', '$name')";
mysql_query($sql);

// 在mysql中,執行插入語句以後,可以得到自增的主鍵id,通過PHP的mysql_insert_id函數可以獲取該id。
$uid = mysql_insert_id();

更新與刪除操作

$sql = "update user set name = 'tom' where id=2 limit 1";
if (mysql_query($sql)) {
    echo '更新成功';
    // 對於刪除與更新操作,可以通過mysql_affected_rows來獲取更新過的數據行數,如果數據沒有變化,則結果爲0。
    echo mysql_affected_rows();
}

$sql = "delete from user where id=2 limit 1";
if (mysql_query($sql)) {
    echo '刪除成功';
    echo mysql_affected_rows();
}

關閉MySQL連接

當數據庫操作完成以後,可以使用mysql_close關閉數據庫連接。當PHP執行完畢以後,默認會自動關閉數據庫連接。

mysql_close();

雖然PHP會自動關閉數據庫連接,但是在對性能要求比較高的情況下,可以在進行完數據庫操作之後儘快關閉數據庫連接,以節省資源,提高性能。

在存在多個數據庫連接的情況下,可以設定連接資源參數來關閉指定的數據庫連接。

$link = mysql_connect($host, $user, $pass);
mysql_close($link);
發佈了165 篇原創文章 · 獲贊 47 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章