亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP連接和操作MySQL數(shù)據(jù)庫基礎教程

 更新時間:2014年09月29日 08:58:01   作者:果凍想  
這篇文章主要介紹了PHP連接和操作MySQL數(shù)據(jù)庫基礎教程,本文講解了mysql擴展、連接數(shù)據(jù)庫、與數(shù)據(jù)庫交互等內容,需要的朋友可以參考下

從這里開始

我的博客,后臺數(shù)據(jù)庫是什么?沒錯,就是MySQL,服務器端使用的腳本就是PHP,整個框架使用的是WordPress。PHP和MySQL就像夫妻一樣,總是在一起干活?,F(xiàn)在這里,就集合PHP,總結一下MySQL的實際使用,也算作是MySQL開發(fā)的入門。關于PHP與MySQL的合作,不外乎以下三種方法:

1.mysql擴展;但是目前已經不推薦使用;

2.mysqli擴展;同時提供面向對象風格和面向過程的風格;要求MySQL版本是4.1及以上的;

3.PDO擴展為PHP訪問數(shù)據(jù)庫定義了一種輕量級的一致接口;PDO_MYSQL是對其的具體實現(xiàn)。這里暫時只關心開發(fā)。由于mysql擴展已經不推薦使用了,我也會與時俱進,不做總結;而mysqli和PDO方式用的比較多,所以這篇將會總結如何使用mysqli擴展來連接數(shù)據(jù)庫服務器,如何查詢和獲取數(shù)據(jù),以及如何執(zhí)行其它重要任務。下一篇博文將會總結PDO的相關內容。

使用mysqli擴展

先看以下測試數(shù)據(jù)庫db_test中的測試數(shù)據(jù):

復制代碼 代碼如下:

mysql> select * from tb_test;
+----+-----------+----------+------------+------------+
| id | firstname | lastname | email      | phone      |
+----+-----------+----------+------------+------------+
|  1 | Young     | Jelly    | 123@qq.com | 1384532120 |
|  3 | Fang      | Jone     | 456@qq.com | 1385138913 |
|  4 | Yuan      | Su       | 789@qq.com | 1385138913 |
+----+-----------+----------+------------+------------+
3 rows in set (0.00 sec)

1.建立和斷開連接

與MySQL數(shù)據(jù)庫交互時,首先要建立連接,最后要斷開連接;這包括與服務器連接并選擇一個數(shù)據(jù)庫,以及最后關閉連接,釋放資源。選擇使用面向對象接口與MySQL服務器交互,首先需要通過其構造函數(shù)實例化mysqli類。

復制代碼 代碼如下:

<?php
    // 實例化mysqli類
    $mysqliConn = new mysqli();
    // 連接服務器,并選擇一個數(shù)據(jù)庫
    $mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
    printf("MySQL error number:%d", $mysqliConn->errno);
    // 或者
    // $mysqliConn->connect("http://127.0.0.1", 'root', 'root');
    // $mysqliConn->select_db('db_test');
   
    // 與數(shù)據(jù)庫交互
   
    // 關閉連接
    $mysqliConn->close();
?>

一旦成功的選擇了數(shù)據(jù)庫,然后就可以對這個數(shù)據(jù)庫執(zhí)行數(shù)據(jù)庫查詢了。一旦腳本執(zhí)行完畢,所有打開的數(shù)據(jù)庫連接都會自動關閉,并釋放資源。不過,有可能一個頁面在執(zhí)行期間需要多個數(shù)據(jù)庫連接,各個連接都應當適當?shù)募右躁P閉。即使只使用一個連接,也應該在腳本的最后將其關閉,這是一種很好的實踐方法。在任何情況下,都由close()負責關閉連接。

2.處理連接錯誤

當然,如果無法連接MySQL數(shù)據(jù)庫,那么不大可能在這個頁面繼續(xù)完成預期的工作了。因此,一定要注意監(jiān)視連接錯誤并相應地做出反應。mysqli擴展包包含很多可以用來捕獲錯誤消息的特性,另外也可以使用異常來做到這一點。例如,可以使用mysqli_connect_errno()和mysqli_connect_error()方法診斷并顯示一個MySQL連接錯誤的有關信息。

關于mysqli的具體信息可以在這里查看:http://php.net/manual/zh/book.mysqli.php

與數(shù)據(jù)庫交互

絕大多數(shù)查詢都與創(chuàng)建、獲取、更新和刪除任務有關,這些任務統(tǒng)稱為CRUD。這里就開始總結CRUD相關的內容。

1.向數(shù)據(jù)庫發(fā)送查詢

方法query()負責將query發(fā)送給數(shù)據(jù)庫。它的定義如下:

復制代碼 代碼如下:

mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

可選參數(shù)resultmode可以用于修改這個方法的行為,它接受兩個可取值。這篇文章總結了二者之間的區(qū)別。http://chabaoo.cn/article/55792.htm;下面是一個簡單的使用例子:

復制代碼 代碼如下:

<?php
    // 實例化mysqli類
    $mysqliConn = new mysqli();
 
    // 連接服務器,并選擇一個數(shù)據(jù)庫
    // 錯誤的密碼
    $mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
    if ($mysqliConn->connect_error)
    {
        printf("Unable to connect to the database:%s", $mysqliConn->connect_error);
        exit();
    }
   
    // 與數(shù)據(jù)庫交互
    $query = 'select firstname, lastname, email from tb_test;';
 
    // 發(fā)送查詢給MySQL
    $result = $mysqliConn->query($query);
 
    // 迭代處理結果集
    while (list($firstname, $lastname, $email) = $result->fetch_row())
    {
        printf("%s %s's email:%s<br/>", $firstname, $lastname, $email);
    }
   
    // 關閉連接
    $mysqliConn->close();
?>

2.插入、更新和刪除數(shù)據(jù)

插入、更新和刪除使用的是insert、update和delete查詢完成的,其做法實際上與select查詢相同。示例代碼如下:

復制代碼 代碼如下:

<?php
    // 實例化mysqli類
    $mysqliConn = new mysqli();
 
    // 連接服務器,并選擇一個數(shù)據(jù)庫
    // 錯誤的密碼
    $mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
    if ($mysqliConn->connect_error)
    {
        printf("Unable to connect to the database:%s", $mysqliConn->connect_error);
        exit();
    }
   
    // 與數(shù)據(jù)庫交互
    $query = 'select firstname, lastname, email from tb_test;';
    // 發(fā)送查詢給MySQL
    $result = $mysqliConn->query($query);
 
    // 迭代處理結果集
    while (list($firstname, $lastname, $email) = $result->fetch_row())
    {
        printf("%s %s's email:%s<br/>", $firstname, $lastname, $email);
    }
   
    $query = "delete from tb_test where firstname = 'Yuan';";
    $result = $mysqliConn->query($query);
 
    // 告訴用戶影響了多少行
    printf("%d row(s) have been deleted.<br/>", $mysqliConn->affected_rows);
    // 重新查詢結果集
    $query = 'select firstname, lastname, email from tb_test;';
 
    // 發(fā)送查詢給MySQL
    $result = $mysqliConn->query($query);
 
    // 迭代處理結果集
    while (list($firstname, $lastname, $email) = $result->fetch_row())
    {
        printf("%s %s's email:%s<br/>", $firstname, $lastname, $email);
    }
    // 關閉連接
    $mysqliConn->close();
?>

3.釋放查詢內存

有時可能會獲取一個特別龐大的結果集,此時一旦完成處理,很有必要釋放該結果集所請求的內存。free()方法可以為我們完成這個任務。例如:

復制代碼 代碼如下:

// 與數(shù)據(jù)庫交互
$query = 'select firstname, lastname, email from tb_test;';
 
// 發(fā)送查詢給MySQL
$result = $mysqliConn->query($query);
 
// 迭代處理結果集
while (list($firstname, $lastname, $email) = $result->fetch_row())
{
    printf("%s %s's email:%s<br/>", $firstname, $lastname, $email);
}
$result->free();

4.解析查詢結果

一旦執(zhí)行了查詢并準備好結果集,下面就可以解析獲取到的結果行了。你可以使用多個方法來獲取各行中的字段,具體選擇哪一個方法主要取決于個人喜好,因為只是引用字段的方法有所不同。

(1)將結果放到對象中

使用fetch_object()方法來完成。fetch_object()方法通常在一個循環(huán)中調用,每次調用都使得返回結果集中的下一行被填入一個對象,然后可以按照PHP典型的對象訪問語法來訪問這個對象。例如:

復制代碼 代碼如下:

// 與數(shù)據(jù)庫交互
$query = 'select firstname, lastname, email from tb_test;';
 
// 發(fā)送查詢給MySQL
$result = $mysqliConn->query($query);
 
// 迭代處理結果集
while ($row = $result->fetch_object())
{
    $firstname = $row->firstname;
    $lastname = $row->lastname;
    $email = $row->email;
}
$result->free();

(2)使用索引數(shù)組和關聯(lián)數(shù)組獲取結果

mysqli擴展包還允許通過fetch_array()方法和fetch_row()方法分別使用關聯(lián)數(shù)組和索引數(shù)組來管理結果集。fetch_array()方法實際上能夠將結果集的各行獲取為一個關聯(lián)數(shù)組、一個數(shù)字索引數(shù)組,或者同時包括二者,可以說,fetch_row()是fetch_array的一個子集。默認地,fetch_array()會同時獲取關聯(lián)數(shù)組和索引數(shù)組,可以在fetch_array中傳入參數(shù)來修改這個默認行為。

MYSQLI_ASSOC,將行作為一個關聯(lián)數(shù)組返回,鍵由字段名表示,值由字段內容表示;
MYSQLI_NUM,將行作為一個數(shù)字索引數(shù)組返回,其元素順序由查詢中指定的字段名順序決定;
MYSQLI_BOTH,就是默認的選項。

確定所選擇的行和受影響的行

通常希望能夠確定select查詢返回的行數(shù),或者受insert、update或delete影響的行數(shù)。

(1)確定返回的行數(shù)

如果希望了解select查詢語句返回了多少行,num_rows屬性很有用。例如:

復制代碼 代碼如下:

// 與數(shù)據(jù)庫交互
$query = 'select firstname, lastname, email from tb_test;';
 
// 發(fā)送查詢給MySQL
$result = $mysqliConn->query($query);
 
// 獲取行數(shù)
$result->num_rows;

記住,num_rows只在確定select查詢所獲取的行數(shù)時有用,如果要獲得受insert、update或delete影響的行數(shù),就要使用下面總結的affected_rows屬性。

(2)確定受影響的行數(shù)

affected_rows屬性用來獲取受insert、update或delete影響的行數(shù)。代碼示例見上面的代碼。

執(zhí)行數(shù)據(jù)庫事務

有3個新方法增強了PHP執(zhí)行MySQL事務的功能,分別為:

1.autocommit函數(shù),啟用自動提交模式;

autocommit()函數(shù)控制MySQL自動提交模式的行為,由傳入的參數(shù)決定啟動還是禁用自動提交;傳入TRUE,則啟動自動提交,傳入false則禁用自動提交。無論啟用還是禁用,成功時都將返回TRUE,失敗時返回FALSE。

2.commit函數(shù),提交事務;將當前事務提交給數(shù)據(jù)庫,成功時返回TRUE,否則返回FALSE。

3.rollback函數(shù),回滾當前事務,成功時返回TRUE,否則返回FALSE。

關于事務,我后面還要繼續(xù)總結,這里就簡要的總結了一下這三個API。

不會結束

這只是MySQL學習的開始,不會結束。再接再勵。

相關文章

  • 表格展示無限級分類(PHP版)

    表格展示無限級分類(PHP版)

    TreeTable是一個能把無限分類展現(xiàn)為表格形式的PHP類庫插件,分類的層級表示為表格的列,分類的行數(shù)表格分類的總數(shù)。單元格顯示分類名稱
    2012-08-08
  • thinkPHP5框架設置404、403等http狀態(tài)頁面的方法

    thinkPHP5框架設置404、403等http狀態(tài)頁面的方法

    這篇文章主要介紹了thinkPHP5框架設置404、403等http狀態(tài)頁面的方法,結合實例形式分析了thinkPHP5框架設置404頁面的相關配置、視圖顯示頁面及控制器調用相關操作技巧,需要的朋友可以參考下
    2018-06-06
  • PHP實現(xiàn)微信商戶支付企業(yè)付款到零錢功能

    PHP實現(xiàn)微信商戶支付企業(yè)付款到零錢功能

    這篇文章主要為大家詳細介紹了PHP實現(xiàn)微信商戶支付企業(yè)付款到零錢功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • visual studio code 調試php方法(圖文詳解)

    visual studio code 調試php方法(圖文詳解)

    本篇文章主要介紹了visual studio code 調試php方法(圖文詳解),具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • thinkphp四種url訪問方式詳解

    thinkphp四種url訪問方式詳解

    這篇文章主要介紹了thinkphp四種url訪問方式,簡單分析了ThinkPHPmvc相關概念并重點講述了URL的四種訪問方式,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • php array_merge_recursive 數(shù)組合并

    php array_merge_recursive 數(shù)組合并

    這篇文章主要介紹了php array_merge_recursive 將兩個或多個數(shù)組合并為一個數(shù)組的相關資料,需要的朋友可以參考下
    2016-10-10
  • PHP 斷點續(xù)傳實例詳解

    PHP 斷點續(xù)傳實例詳解

    這篇文章主要介紹了PHP 斷點續(xù)傳的相關知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • php創(chuàng)建多級目錄完整封裝類操作方法

    php創(chuàng)建多級目錄完整封裝類操作方法

    下面小編就為大家?guī)硪黄猵hp創(chuàng)建多級目錄完整封裝類操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Thinkphp 框架配置操作之動態(tài)配置、擴展配置及批量配置實例分析

    Thinkphp 框架配置操作之動態(tài)配置、擴展配置及批量配置實例分析

    這篇文章主要介紹了Thinkphp 框架配置操作之動態(tài)配置、擴展配置及批量配置,結合實例形式分析了Thinkphp配置操作中動態(tài)配置、擴展配置及批量配置基本原理、實現(xiàn)方法與相關注意事項,需要的朋友可以參考下
    2020-05-05
  • PHP多進程通信-消息隊列使用

    PHP多進程通信-消息隊列使用

    這篇文章主要介紹了PHP通信-消息隊列使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03

最新評論