PHP資料庫操作

來源:互聯網
上載者:User
PHP支援哪些資料庫

PHP通過安裝相應的擴充來實現資料庫操作,現代應用程式的設計離不開資料庫的應用,當前主流的資料庫有MsSQL,MySQL,Sybase,Db2,Oracle,PostgreSQL,Access等,這些資料庫PHP都能夠安裝擴充來支援,一般情況下常說的LAMP架構指的是:Linux、Apache、Mysql、PHP,因此Mysql資料庫在PHP中的應用非常廣泛,我們會在本章中簡單的瞭解Mysql的操作方法。

資料庫擴充

PHP中一個資料庫可能有一個或者多個擴充,其中既有官方的,也有第三方提供的。像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 = 'dbuser';

$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);

串連MySQL資料庫

PHP要對資料庫進行操作,首先要做的是與資料庫建立串連,通常我們使用mysql_connect函數進行資料庫連接,該函數需要指定資料庫的地址,使用者名稱及密碼。

$host = 'localhost';

$user = 'code1';

$link = mysql_connect($host, $user, $pass);

$pass = '';

PHP串連資料庫的方式類似於直接在命令列下通過進行串連,類似:mysql -hlocalhost -ucode1 -p,當串連成功以後,我們需要選擇一個操作的資料庫,通過mysql_select_db函數來選擇資料庫。

mysql_select_db('code1');

通常我們會先設定一下當前串連使用的字元編碼,一般的我們會使用utf8編碼。

mysql_query("set names 'utf8'");

通過上面的步驟,我們就與資料庫建立了串連,可以進行資料操作了。

執行MySQL查詢

在資料庫建立串連以後就可以進行查詢,採用mysql_query加sql語句的形式向資料庫發送查詢指令。

$res = mysql_query('select * from user limit 1');

對於查詢類的語句會返回一個資源控制代碼(resource),可以通過該資源擷取查詢結果集中的資料。

$row = mysql_fetch_array($res);

var_dump($row);

預設的,PHP使用最近的資料庫連接執行查詢,但如果存在多個串連的情況,則可以通過參數指令從那個串連中進行查詢。

$link1 = mysql_connect('127.0.0.1', 'code1', '');

$link2 = mysql_connect('127.0.0.1', 'code1', '', true); //開啟一個新的串連

$res = mysql_query('select * from user limit 1', $link1); //從第一個串連中查詢資料

插入新資料到MySQL中

當我們瞭解了如何使用mysql_query進行資料查詢以後,那麼類似的,插入資料其實也是通過執行一個sql語句來實現,例如:

$sql = "insert into user(name, age, class) values('李四', 18, '高三一班')";

mysql_query($sql); //執行插入語句

通常資料都是儲存在變數或者數組中,因此sql語句需要先進行字串拼接得到。

$name = '李四';

$age = 18;

$class = '高三一班';

$sql = "insert into user(name, age, class) values('$name', '$age', '$class')";

mysql_query($sql); //執行插入語句

在mysql中,執行插入語句以後,可以得到自增的主鍵id,通過PHP的mysql_insert_id函數可以擷取該id。

$uid = mysql_insert_id();

這個id的作用非常大,通常可以用來判斷是否插入成功,或者作為關聯ID進行其他的資料操作。

取得資料查詢結果

通過前面的章節,我們發現PHP操作資料庫跟MySql用戶端上操作極為相似,先進行串連,然後執行sql語句,再然後擷取我們想要的結果集。

PHP有多個函數可以擷取資料集中的一行資料,最常用的是mysql_fetch_array,可以通過設定參數來更改行資料的下標,預設的會包含數字索引的下標以及欄位名的關聯索引下標。

$sql = "select * from user limit 1";

$result = mysql_query($sql);

$row = mysql_fetch_array($result);

可以通過設定參數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);

如果要擷取資料集中的所有資料,我們通過迴圈來遍曆整個結果集。

$data = array();

while ($row = mysql_fetch_array($result)) {

$data[] = $row;

}

查詢分頁資料

上一節中,我們瞭解到通過迴圈可以擷取一個查詢的所有資料,在實際應用中,我們並不希望一次性擷取資料表中的所有資料,那樣效能會非常的低,因此會使用翻頁功能,每頁僅顯示10條或者20條資料。

通過mysql的limit可以很容易的實現分頁,limit m,n表示從m行後取n行資料,在PHP中我們需要構造m與n來實現擷取某一頁的所有資料。

假定當前頁為$page,每頁顯示$n條資料,那麼m為當前頁前面所有的資料,既$m = ($page-1) * $n,在知道了翻頁原理以後,那麼我們很容易通過構造SQL語句在PHP中實現資料翻頁。

$page = 2;

$n = 2;

$m = ($page - 1) * $n;

$sql = "select * from user limit $m, $n";

$result = mysql_query($sql);

//迴圈擷取當前頁的資料

while ($row = mysql_fetch_assoc($result)) {

$data = array();

$data[] = $row;

}

在上面的例子中,我們使用了$m與$n變數來表示位移量與每頁資料條數,但我們推薦使用更有意義的變數名來表示,比如$pagesize, $start, $offset等,這樣更容易理解,有助於團隊協作開發。

';print_r($data);echo '
';

更新與刪除資料

資料的更新與刪除相對比較簡單,只需要構建好相應的sql語句,然後調用mysql_query執行就能完成相應的更新與刪除操作。

$sql = "update user set name = '曹操' where id=2 limit 1";if (mysql_query($sql)) { echo '更新成功';}

同樣的刪除可以使用類似以下的代碼:

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

對於刪除與更新操作,可以通過mysql_affected_rows函數來擷取更新過的資料行數,如果資料沒有變化,則結果為0。

$sql = "update user set name = '曹操' where id=2 limit 1";if (mysql_query($sql)) { echo mysql_affected_rows();}

關閉MySQL串連

當資料庫操作完成以後,可以使用mysql_close關閉資料庫連接,預設的,當PHP執行完畢以後,會自動的關閉資料庫連接。

mysql_close();

雖然PHP會自動關閉資料庫連接,一般情況下已經滿足需求,但是在對效能要求比較高的情況下,可以在進行完資料庫操作之後儘快關閉資料庫連接,以節省資源,提高效能。

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

$link = mysql_connect($host, $user, $pass);mysql_close($link);



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

以上就介紹了PHP資料庫操作,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.