PHP5: mysqli 插入, 查詢, 更新和刪除 Insert Update Delete Using mysqli (CRUD)

 

原文: PHP5: mysqli 插入, 查詢, 更新和刪除  Insert Update Delete Using mysqli (CRUD)php

 

 

 

Selection_095

PHP 5 及以上版本建議使用如下方式鏈接 MySQL :mysql

  • MySQLi extension ("i" 意爲 improved)
  • PDO (PHP Data Objects)
Mysqli提供了 面向對象面向過程兩種方式來與數據庫交互,分別看一下這兩種方式。

 

1. PHP 鏈接 MySQL

 
1.面向對象
在面向對象的方式中,mysqli被封裝成一個類,它的構造方法以下:
__construct ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket ]]]]]] )
在上述語法中涉及到的參數說明以下。
l         host:鏈接的服務器地址。
l         username:鏈接數據庫的用戶名,默認值是服務器進程全部者的用戶名。
l         passwd:鏈接數據庫的密碼,默認值爲空。
l         dbname:鏈接的數據庫名稱。
l         port:TCP端口號。
l         socket:UNIX域socket。
 

要創建與MySQL的鏈接能夠經過其構造方法實例化mysqli類,例以下面的代碼:sql

Php代碼   收藏代碼
  1. <?php  
  2.     $db_host = "localhost";                                       //鏈接的服務器地址  
  3.     $db_user = "root";                                            //鏈接數據庫的用戶名  
  4.     $db_psw  = "root";                                            //鏈接數據庫的密碼  
  5.     $db_name = "ikeepstudying";                                   //鏈接的數據庫名稱  
  6.   
  7.     // 建立鏈接  
  8.     $conn    = new mysqli($db_host,$db_user,$db_psw,$db_name);  
  9.   
  10.     // 檢測鏈接  
  11.     if ($conn->connect_error) {  
  12.         die("鏈接失敗: " . $conn->connect_error);  
  13.         // 或者使用  
  14.         // die('Error : ('. $conn->connect_errno .') '. $conn->connect_error);  
  15.     }  
  16.     echo "鏈接成功";  
  17. ?>  

 

mysqli還提供了一個鏈接MySQL的成員方法connect()。當實例化構造方法爲空的mysqli類時,用mysqli對象調用connect()方法一樣可鏈接MySQL,例如,下面的代碼:數據庫

Php代碼   收藏代碼
  1. <?php  
  2.     $db_host = "localhost";                                 //鏈接的服務器地址  
  3.     $db_user = "root";                                      //鏈接數據庫的用戶名  
  4.     $db_psw  = "root";                                      //鏈接數據庫的密碼  
  5.     $db_name = "ikeepstudying";                             //鏈接的數據庫名稱  
  6.     $conn    = new mysqli();  
  7.     $conn->connect($db_host,$db_user,$db_psw,$db_name);  
  8.       
  9.     // 檢測鏈接  
  10.     if ($conn->connect_error) {  
  11.         die("鏈接失敗: " . $conn->connect_error);  
  12.         // 或者使用  
  13.         // die('Error : ('. $conn->connect_errno .') '. $conn->connect_error);  
  14.     }  
  15.     echo "鏈接成功";  
  16. ?>  

 

關閉與MySQL服務器的鏈接經過mysqli對象調用close()方法便可,例如:數組

Php代碼   收藏代碼
  1. $conn->close();  

 

2.面向過程
在面向過程的方式中,mysqli擴展提供了函數mysqli_connect()與MySQL創建鏈接,該函數的語法格式以下:
mysqli_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket ]]]]]] )

mysqli_connect()函數的用法與mysql擴展中的mysql_connect()函數用法十分類似,下面是mysqli_connect()函數的用法示例:服務器

Php代碼   收藏代碼
  1. <?php  
  2.     $servername = "localhost";  
  3.     $username   = "username";  
  4.     $password   = "password";  
  5.     $database   = "ikeepstudying";  
  6.   
  7.     // 建立鏈接  
  8.     $conn = mysqli_connect($servername, $username, $password, $database);  
  9.   
  10.     // 檢測鏈接  
  11.     if (!$conn) {  
  12.         die("Connection failed: " . mysqli_connect_error());  
  13.     }  
  14.     echo "鏈接成功";  
  15. ?>  

 

關閉與MySQL服務器的鏈接使用mysqli_close()函數,例如:併發

Sql代碼   收藏代碼
  1. mysqli_close();  

 

2. PHP MySQL 插入數據

在建立完數據庫和表後,咱們能夠向表中添加數據。socket

如下爲一些語法規則:函數

  • PHP 中 SQL 查詢語句必須使用引號
  • 在 SQL 查詢語句中的字符串值必須加引號
  • 數值的值不須要引號
  • NULL 值不須要引號

INSERT INTO 語句一般用於向 MySQL 表添加新的記錄:性能

Sql代碼   收藏代碼
  1. INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)  
 

 

如下實例向 "MyGuests" 表添加了新的記錄:

 
1.面向對象

 

Php代碼   收藏代碼
  1. <?php  
  2. $servername = "localhost";  
  3. $username = "username";  
  4. $password = "password";  
  5. $dbname = "ikeepstudying";  
  6.   
  7. // 建立鏈接  
  8. $conn = new mysqli($servername, $username, $password, $dbname);  
  9. // 檢測鏈接  
  10. if ($conn->connect_error) {  
  11.     die("鏈接失敗: " . $conn->connect_error);  
  12. }  
  13.   
  14. $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";  
  15.   
  16. if ($conn->query($sql) === TRUE) {  
  17.     echo "新記錄插入成功";  
  18. else {  
  19.     echo "Error: " . $sql . "<br>" . $conn->error;  
  20. }  
  21.   
  22. $conn->close();  
  23. ?>  
 

 

插入多條記錄:

Php代碼   收藏代碼
  1. <?php  
  2. $servername = "localhost";  
  3. $username = "username";  
  4. $password = "password";  
  5. $dbname = "ikeepstudying";  
  6.   
  7. // 建立連接  
  8. $conn = new mysqli($servername, $username, $password, $dbname);  
  9. // 檢查連接  
  10. if ($conn->connect_error) {  
  11.     die("鏈接失敗: " . $conn->connect_error);  
  12. }  
  13.   
  14. $sql = "INSERT INTO MyGuests (firstname, lastname, email)  
  15. VALUES ('John', 'Doe', 'john@example.com');";  
  16. $sql .= "INSERT INTO MyGuests (firstname, lastname, email)  
  17. VALUES ('Mary', 'Moe', 'mary@example.com');";  
  18. $sql .= "INSERT INTO MyGuests (firstname, lastname, email)  
  19. VALUES ('Julie', 'Dooley', 'julie@example.com')";  
  20.   
  21. if ($conn->multi_query($sql) === TRUE) {  
  22.     echo "新記錄插入成功";  
  23. else {  
  24.     echo "Error: " . $sql . "<br>" . $conn->error;  
  25. }  
  26.   
  27. $conn->close();  
  28. ?>  
 

 

請注意,每一個SQL語句必須用分號隔開。

2.面向過程

 

Php代碼   收藏代碼
  1. <?php  
  2. $servername = "localhost";  
  3. $username = "username";  
  4. $password = "password";  
  5. $dbname = "ikeepstudying";  
  6.   
  7. // 建立鏈接  
  8. $conn = mysqli_connect($servername, $username, $password, $dbname);  
  9. // 檢測鏈接  
  10. if (!$conn) {  
  11.     die("Connection failed: " . mysqli_connect_error());  
  12. }  
  13.   
  14. $sql = "INSERT INTO MyGuests (firstname, lastname, email)  
  15. VALUES ('John', 'Doe', 'john@example.com')";  
  16.   
  17. if (mysqli_query($conn, $sql)) {  
  18.     echo "新記錄插入成功";  
  19. else {  
  20.     echo "Error: " . $sql . "<br>" . mysqli_error($conn);  
  21. }  
  22.   
  23. mysqli_close($conn);  
  24. ?>  
 

 

插入多條記錄:

Php代碼   收藏代碼
  1. <?php  
  2. $servername = "localhost";  
  3. $username = "username";  
  4. $password = "password";  
  5. $dbname = "ikeepstudying";  
  6.   
  7. // 建立連接  
  8. $conn = mysqli_connect($servername, $username, $password, $dbname);  
  9. // 檢查連接  
  10. if (!$conn) {  
  11.     die("鏈接失敗: " . mysqli_connect_error());  
  12. }  
  13.   
  14. $sql = "INSERT INTO MyGuests (firstname, lastname, email)  
  15. VALUES ('John', 'Doe', 'john@example.com');";  
  16. $sql .= "INSERT INTO MyGuests (firstname, lastname, email)  
  17. VALUES ('Mary', 'Moe', 'mary@example.com');";  
  18. $sql .= "INSERT INTO MyGuests (firstname, lastname, email)  
  19. VALUES ('Julie', 'Dooley', 'julie@example.com')";  
  20.   
  21. if (mysqli_multi_query($conn, $sql)) {  
  22.     echo "新記錄插入成功";  
  23. else {  
  24.     echo "Error: " . $sql . "<br>" . mysqli_error($conn);  
  25. }  
  26.   
  27. mysqli_close($conn);  
  28. ?>  
 

 

php5和新增了獲取最新插入值的ID的函數:mysqli_insert_id($conn),和以前的mysql_insert_id()相似。

都是用在insert語句以後獲取最新的自動id號,要注意的是mysqli_insert_id(),括號裏面的必定要是數據庫鏈接而不是執行結果$result。

 

程序實例:

Php代碼   收藏代碼
  1. $conn   = new mysqli("127.0.0.1","root","","ikeepstudying") or die("數據庫鏈接超時!");  
  2. $sql    = "insert into my_table (name,url) values('ikeepstudying','http://justcode.ikeepstudying.com')";  
  3. $result = $conn->query($sql) or die("失敗");  
  4.   
  5. echo mysqli_insert_id($conn); //輸出剛剛插入數據的ID,注意:括號裏面的要是$conn而不是$result  

 

 

3. PHP MySQL 預處理語句

 

預處理語句對於防止 MySQL 注入是很是有用的。使用預準備語句可提升重複使用語句的性能,在PHP中,使用prepare()方法來進行預準備語句查詢,使用execute()方法來執行預準備語句。PHP有兩種預準備語句:一種是綁定結果,另外一種是綁定參數


 

預處理語句, 綁定參數及綁定結果

預處理語句用於執行多個相同的 SQL 語句,而且執行效率更高。

預處理語句的工做原理以下:

  1. 預處理:建立 SQL 語句模板併發送到數據庫。預留的值使用參數 "?" 標記 。例如:
    Sql代碼   收藏代碼
    1. INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)  
     
  2. 數據庫解析,編譯,對SQL語句模板執行查詢優化,並存儲結果不輸出。
  3. 執行:最後,將應用綁定的值傳遞給參數("?" 標記),數據庫執行語句。應用能夠屢次執行語句,若是參數的值不同。

相比於直接執行SQL語句,預處理語句有兩個主要優勢:

  • 預處理語句大大減小了分析時間,只作了一次查詢(雖然語句屢次執行)。
  • 綁定參數減小了服務器帶寬,你只須要發送查詢的參數,而不是整個語句。
  • 預處理語句針對SQL注入是很是有用的,由於參數值發送後使用不一樣的協議,保證了數據的合法性。

 

MySQLi 預處理語句及綁定參數

所謂綁定參數就是把PHP腳本中的自定義變量綁定到SQL語句中的參數(參數使用 「?」代替)上,綁定參數使用bind_param()方法,該方法的語法格式以下:
bool bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

如下實例在 MySQLi 中使用了預處理語句,並綁定了相應的參數:

Php代碼   收藏代碼
  1. <?php  
  2. $servername = "localhost";  
  3. $username = "username";  
  4. $password = "password";  
  5. $dbname = "ikeepstudying";  
  6.   
  7. // 建立鏈接  
  8. $conn = new mysqli($servername, $username, $password, $dbname);  
  9.   
  10. // 檢測鏈接  
  11. if ($conn->connect_error) {  
  12.     die("鏈接失敗: " . $conn->connect_error);  
  13. }  
  14.   
  15. // 預處理及綁定  
  16. $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)");  
  17. $stmt->bind_param("sss", $firstname, $lastname, $email);  
  18.   
  19. // 設置參數並執行  
  20. $firstname = "John";  
  21. $lastname = "Doe";  
  22. $email = "john@example.com";  
  23. $stmt->execute();  
  24.   
  25. $firstname = "Mary";  
  26. $lastname = "Moe";  
  27. $email = "mary@example.com";  
  28. $stmt->execute();  
  29.   
  30. $firstname = "Julie";  
  31. $lastname = "Dooley";  
  32. $email = "julie@example.com";  
  33. $stmt->execute();  
  34.   
  35. echo "新記錄插入成功";  
  36.   
  37. $stmt->close();  
  38. $conn->close();  
  39. ?>  
 

 

解析如下實例的每行代碼:
Sql代碼   收藏代碼
  1. "INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)"  
 

在 SQL 語句中,咱們使用了問號 (?),在此咱們能夠將問號替換爲整型,字符串,雙精度浮點型和布爾值。

接下來,讓咱們來看下 bind_param() 函數:

Php代碼   收藏代碼
  1. $stmt->bind_param("sss", $firstname, $lastname, $email);  
 

 

該函數綁定了 SQL 的參數,且告訴數據庫參數的值。 "sss" 參數列處理其他參數的數據類型。s 字符告訴數據庫該參數爲字符串。

types:綁定的變量的數據類型,它接受的字符種類包括4個,如表所示。
字符種類
表明的數據類型
i
integer
d
double
s
string
b
blob
參數types接受的字符的種類和綁定的變量須要一一對應。

經過告訴數據庫參數的數據類型,能夠下降 SQL 注入的風險。

注意: 若是你想插入其餘數據(用戶輸入),對數據的驗證是很是重要的。

 

MySQLi 預處理語句及綁定結果

所謂綁定結果就是把PHP腳本中的自定義變量綁定到結果集中的相應字段上,這些變量就表明着所查詢的記錄,綁定結果的示例代碼以下:

Php代碼   收藏代碼
  1. <?php  
  2.     $mysqli = new mysqli("localhost","root","root","ikeepstudying");     //實例化mysqli  
  3.     $query  = "select * from MyGuests";  
  4.     $result = $mysqli->prepare($query);                                  //進行預準備語句查詢  
  5.     $result->execute();                                                  //執行預準備語句  
  6.     $result->bind_result($id,$firstname,$lastname,$email);                        //綁定結果  
  7.     while ($result->fetch()) {  
  8.         echo $id;  
  9.         echo $firstname;  
  10.         echo $lastname;  
  11.         echo $email;  
  12.     }  
  13.     $result->close();                                                     //關閉預準備語句  
  14. ?>  
 

 

在綁定結果的時候,腳本中的變量要與結果集中的字段一一對應,綁定完之後,經過fetch()方法將綁定在結果集中的變量一一取出來,最後將預準備語句和數據庫鏈接分別關閉。

 

MySQLi 同時綁定參數和綁定結果

在一個腳本中還能夠同時綁定參數和綁定結果,示例代碼以下:

Php代碼   收藏代碼
  1. <?php  
  2.     $conn   = new mysqli("localhost","root","root","ikeepstudying");     //實例化mysqli  
  3.     $query  = "select * from MyGuests where id < ?";  
  4.     $result = $conn->prepare($query);  
  5.     $result->bind_param("i",$id);                                    //綁定參數  
  6.     $id=4;  
  7.     $result->execute();  
  8.     $result->bind_result($id,$number,$name,$age);                   //綁定結果  
  9.     while ($result->fetch()) {  
  10.         echo $id;  
  11.         echo $firstname;  
  12.         echo $lastname;  
  13.         echo $email;  
  14.     }  
  15.   
  16.     $result->close();  
  17.     $conn->close();  
  18. ?>  

 

 

4. PHP MySQL 讀取數據, 刪除及更新

SELECT 語句用於從數據表中讀取數據:

SELECT column_name(s) FROM table_name
在mysqli中,執行查詢使用query()方法,該方法的語法格式以下:
mixed query ( string $query [, int $resultmode ] )
在上述語法中涉及到的參數說明以下。
l         query:向服務器發送的SQL語句。
l         resultmode:該參數接受兩個值,一個是MYSQLI_STORE_RESULT,表示結果做爲緩衝集合返回;另外一個是MYSQLI_USE_RESULT,表示結果做爲非緩衝集合返回。
 
下面是使用query()方法執行查詢的例子:
 

1.面向對象

Php代碼   收藏代碼
  1. <?php  
  2.     $mysqli = new mysqli("localhost","root","root","ikeepstudying");     //實例化mysqli  
  3.     $query  = "select * from MyGuests";  
  4.     $result = $mysqli->query($query);  
  5.     if ($result) {  
  6.         if($result->num_rows>0){                                               //判斷結果集中行的數目是否大於0  
  7.             while($row = $result->fetch_array() ){                        //循環輸出結果集中的記錄  
  8.                 echo ($row[0])."<br>";  
  9.                 echo ($row[1])."<br>";  
  10.                 echo ($row[2])."<br>";  
  11.                 echo ($row[3])."<br>";  
  12.                 echo "<hr>";  
  13.             }  
  14.         }  
  15.     }else {  
  16.         echo "查詢失敗";  
  17.     }  
  18.     $result->free();  
  19.     $mysqli->close();  
  20. ?>  
 在上面代碼中,num_rows爲結果集的一個屬性,返回結果集中行的數目。方法fetch_array()將結果集中的記錄放入一個數組中並將其返回。最後使用free()方法將結果集中的內存釋放,使用close()方法將數據庫鏈接關閉。
 

 對於刪除記錄(delete)、保存記錄(insert)和修改記錄(update)的操做,也是使用query()方法來執行的,下面是刪除記錄的例子:

Php代碼   收藏代碼
  1. <?php  
  2.     $mysqli = new mysqli("localhost","root","root","ikeepstudying");              //實例化mysqli  
  3.     $query  = "delete from MyGuests where id=2";  
  4.     $result = $mysqli->query($query);  
  5.     if ($result){  
  6.         echo "刪除操做執行成功";  
  7.     }else {  
  8.         echo "刪除操做執行失敗";  
  9.     }  
  10.     $mysqli->close();  
  11. ?>  
 

 

完整實例:

Php代碼   收藏代碼
  1. <?php  
  2.     $servername = "localhost";  
  3.     $username = "username";  
  4.     $password = "password";  
  5.     $dbname = "ikeepstudying";  
  6.       
  7.     // 建立鏈接  
  8.     $conn = new mysqli($servername, $username, $password, $dbname);  
  9.     // 檢測鏈接  
  10.     if ($conn->connect_error) {  
  11.         die("鏈接失敗: " . $conn->connect_error);  
  12.     }  
  13.       
  14.     $sql = "SELECT id, firstname, lastname FROM MyGuests";  
  15.     $result = $conn->query($sql);  
  16.       
  17.     if ($result->num_rows > 0) {  
  18.         // 輸出每行數據  
  19.         while($row = $result->fetch_assoc()) {  
  20.             echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"];  
  21.         }  
  22.     } else {  
  23.         echo "0 個結果";  
  24.     }  
  25.     $conn->close();  
  26. ?>  

 

 

更多實例:

 

INSERT

 

Php代碼   收藏代碼
  1. $stmt = $mysqli->prepare("INSERT INTO movies(filmName,   
  2. filmDescription,filmImage,filmPrice,filmReview) VALUES (?, ?, ?, ?, ?)");  
  3. $stmt->bind_param('sssdi', $_POST['filmName'],   
  4. $_POST['filmDescription'],  
  5. $_POST['filmImage'],  
  6. $_POST['filmPrice'],  
  7. $_POST['filmReview']);  
  8. $stmt->execute();   
  9. $stmt->close();  

 

 

Getting Auto Increment Key Values with insert_id

 

Php代碼   收藏代碼
  1. $stmt = $mysqli->prepare("INSERT INTO movies(filmName,   
  2. filmDescription,filmImage,filmPrice,filmReview) VALUES (?, ?, ?, ?, ?)");  
  3. $stmt->bind_param('sssdi', $_POST['filmName'],   
  4. $_POST['filmDescription'],  
  5. $_POST['filmImage'],  
  6. $_POST['filmPrice'],  
  7. $_POST['filmReview']);  
  8. $stmt->execute();  
  9. $newId = $stmt->insert_id;  
  10. $stmt->close();  

 

 

UPDATE

 

Php代碼   收藏代碼
  1. $stmt = $mysqli->prepare("UPDATE movies SET filmName = ?,   
  2.    filmDescription = ?,   
  3.    filmImage = ?,    
  4.    filmPrice = ?,    
  5.    filmReview = ?    
  6.    WHERE filmID = ?");  
  7. $stmt->bind_param('sssdii',  
  8.    $_POST['filmName'],  
  9.    $_POST['filmDescription'],  
  10.    $_POST['filmImage'],  
  11.    $_POST['filmPrice'],   
  12.    $_POST['filmReview'],  
  13.    $_POST['filmID']);  
  14. $stmt->execute();   
  15. $stmt->close();  

 

 

DELETE

 

Php代碼   收藏代碼
  1. $stmt = $mysqli->prepare("DELETE FROM movies WHERE filmID = ?");  
  2. $stmt->bind_param('i', $_POST['filmID']);  
  3. $stmt->execute();   
  4. $stmt->close();  

 

 

2.面向過程

Php代碼   收藏代碼
  1. <?php  
  2.     $con = mysqli_connect("localhost","username","password","ikeepstudying");  
  3.   
  4.     // 檢測鏈接  
  5.     if (mysqli_connect_errno())  
  6.     {  
  7.         echo "鏈接失敗: " . mysqli_connect_error();  
  8.     }  
  9.   
  10.     $result = mysqli_query($con,"SELECT * FROM Persons WHERE FirstName='Peter'");  
  11.   
  12.     while($row = mysqli_fetch_array($result))  
  13.     {  
  14.         echo $row['FirstName'] . " " . $row['LastName'];  
  15.         echo "<br>";  
  16.     }  
  17. ?>  

 

 

5. mysqli 讀取數據庫的幾種方式

mysqli有四種讀取數據庫數據的方式:mysqli_fetch_array(), mysqli_fetch_object(),  mysqli_fetch_accoc(),  mysqli_fetch_row()。

 

區別是:

  • mysqli_fetch_array(),同時返回關係型數組計數型數組2種,讀取數據的時候咱們能夠用好比:$result[1] 或者是$result["username"]。
  • mysqli_fetch_accoc(),返回關係型數組,讀取數據的時候咱們能夠用好比:$result["username"]。
  • mysqli_fetch_row(),返回計數型數組,讀取數據的時候咱們能夠用好比:$result[0]。
  • mysqli_fetch_object()返回一個對象,讀取數據的時候咱們能夠用好比:$result->username的方式讀取數據。

 

6. mysqli 一些函數的對比 ( 面向對象 vs 面向過程 )

1. mysqli 鏈接數據庫:

$db = new mysqli(host,user,password,database);
這是對象導向的鏈接方法,還有一種過程導向的鏈接方法。前者返回一個對象,後者返回一個資源。
$db = mysqli_connect(host,user,password,database);

 

2.mysqli 鏈接出錯函數:

$db->connect_error
or
mysqli_connect_error();
若是鏈接出錯,該函數返回一個錯誤號,不然返回0;

 

3.選擇數據庫:

$db->select_db(dbname);
or
mysqli_select_db(db_resource,db_name);

 

4.mysqli 執行查詢

$result = $db->query($query);
or
$result = mysqli_query($db,$query);

 

5.返回結果的行數:

$num_results = $result->num_rows;
or
$num_results = mysqli_num_rows($result);

 

6.取出每一行的結果(返回關係型數組):

$row = $result->fetch_assoc();
or
$row = mysqli_fetch_assoc($result);

 

7.取出每一行的結果(返回計數型數組):

$row = $result->fetch_row($result);
or
$row = mysqli_fetch_row($result);

 

8.取出每一行的結果(返回一個對象):

$row = $result->fetch_object();
or
$row = mysqli_fetch_object($result);

 

9.釋放查詢結果:

$result->free();
or
mysqli_free_result($result);

 

10.關閉數據庫鏈接:

$db->close();
or
mysqli_close($db);

 

11.一條查詢所影響的行數:

$db->affected_rows;
or
mysqli_affected_rows($result);

 

12.模式化SQL語句執行:

$query = 「insert into books values(?, ?, ?, ?)」;
$stmt = $db->prepare($query);
$stmt->bind_param(「sssd」, $isbn, $author, $title, $price);
$stmt->execute();
echo $stmt->affected_rows.’ book inserted into database.’;
$stmt->close();

在過程化執行方式中,

$db->prepare()對應mysqli_stmt_prepare()函數;
$stmt->bind_param()對應mysqli_stmt_bind_param()函數;
$stmt->execute() 對應mysqli_stmt_execute()函數;

 

 

本文轉自: PHP5: mysqli 插入, 查詢, 更新和刪除  Insert Update Delete Using mysqli (CRUD)

相關文章
相關標籤/搜索