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);