1. 程式人生 > >php實現資料庫的增刪改查總結

php實現資料庫的增刪改查總結

查詢語句的語法:
select() * | 欄位列表 from 表列表 where 條件  查詢可以返回一個結果集
select * from mytable

select id,name from mytable

select * from mytable where id=3

select * from mytable where age<20

not非 and與 or或
select * form mytable where age<20 and gender=1

常見的數學函式
1、count函式 可以查詢滿足條件的記錄數  無法計算null值,並且會忽略null值   分頁中使用。
2、max獲取最大值  min獲取最小值   字串的話比較ascii碼值
3、avg獲取平均值  它的引數一般是數值   對於字串無法轉換,返回0 

order by  排序
語法: select * | 欄位列表 from 表列表 where order by 排序欄位列表 asc(升序) | desc(降序)

limit 獲取指定範圍的資料
limit後只有一個引數:相當於獲取指定的前n條記錄
selecte * from mytable limit 3
//注意:order by必須寫在limit的前面
selecte * from mytable order by id desc limit 3
limit後兩個引數:limit n(偏移量,從0開始),m(獲取的記錄數)  從偏移量n開始,取m條
以下兩種寫法均可。
select * from mytable limit 2,4
select * from mutable limit 4 offset 2

我們需要將不同的資料放在不同的表中,便於我們日後的管理及使用。

多表查詢
使用select * where的方式    等號在where後面寫是判斷的意思
select * from student,class where student.cid = class.classid
select studentid,studentname,age,gender,classname from student,class where student.id = class.classid
以上兩種書寫方式已經被第三種書寫方式給替代了  join on
select * from student JOIN class on student.cid = class.classid
left join  左側表作為主表。可獲取左表中的所有資料,如果建立關聯的欄位在右表中沒有存在,則右表中相應欄位的資料預設為空
select * from student left JOIN class on student.cid = class.classid
right join 右表作為主表, 獲取右表中的所有資料,如果建立關聯的欄位在左表中沒有存在,則左表中相應的欄位的資料預設為空
select * from student right JOIN class on student.cid = class.classid

建立php與資料庫之間的連線
1、在php中使用musqli_connect函式就可以實現php與伺服器的連結,
函式的引數為主機,使用者名稱,密碼,要操作的資料庫
並且此函式會自動的開啟連線。 
函式的返回值為布林值,
(1)連線成功就會返回一個連線物件(資源)
(2)連線失敗的話會返回false
下面是幾種常見連線失敗的情況
Unknown database "mybase1"   資料庫找不到,注意名稱是否正確
Access denied for user 'root'@'localhost'(using password:YES):密碼錯誤或使用者名稱錯誤
mysqli_connect()   一般是伺服器相關的錯誤
所以需要引數來接收。
2、之後需要判斷連線是否成功?
header("Content-Type:text/html;charset=utf-8);   //設定當前php的返回值的編碼為utf-8
$conn = musqli_connect("localhost","root","root","mybase");
mysqli_set_charset($conn,"utf8");  //保證伺服器返回值的編碼與當前php編碼一致,設定伺服器的返回資料的編碼。mysqli_set_chaset(連線物件,編碼格式字串);

函式die或exit   既可以列印輸出結果,又可以阻止下面程式碼的繼續執行。

3、連線成功之後,建立sql語句,執行相關的操作
(1)新增資料 
    在執行新增語句時,mysqli_query有返回值,成功為true;失敗則為false
    $sql="insert into mytable values(null,'張三',30,'男')";
    $result = mysqli_query($conn,$sql);  //result就是來接收mysqli_query的返回值,接收之後需要進行判斷的。
    if($result){
       echo '新增成功';
     }else{
       echo '新增失敗';
       echo mysqli_error($conn);   //mysqli_error(連線物件);它可以輸出最近一條sql語句在執行時所產生的錯誤資訊。
     }
(2)修改操作
     $sql = "update mytable set age = 20 where id = '3'";
     $result = mysqli_query($conn,$sql);
     if($result){
       echo '修改成功';
     }else{
       echo '修改失敗';
       echo mysqli_error($conn);   //打印出失敗的原因
     }
(3)刪除操作
      $sql = "delete from mytable where id = '4'";
      $result = mysqli_query($conn,$sql);
      if($result){
        echo '刪除成功';
      }else{
        echo '刪除失敗';
        echo mysqli_error($conn); 
(4)查詢操作
    1、設定響應頭header("Content-Type:text/html;charset:utf-8");
    2、建立資料連線 $conn=mysqli_connect("localhost","root","root","mybase");
    3、設定編碼 
          mysqli_set_charset($conn,"utf8");
          或者:mysqli_query($conn,"set naes utf-8");  比較常見
    4、判斷連線狀態    if(!$conn){die("連線失敗")};
    5、建立查詢語句   $sql = "select * from mytable";
    6、執行查詢語句、接收  $result = mysqli_query($conn,$sql);
      注意:查詢語句的返回結果並不是表中的資料,而只是一個針對表資料的引用。
      如果查詢失敗,則返回false
      如果成功,則有兩種情況:有結果集無資料或有結果集也有資料
      判斷結果集中是否有資料 mysqli_num_rows(結果集)可以判斷當前結果集中是否有資料行
      提取資料中的函式
        需要注意:以下函式只能讀取一行資料,但是讀取完這一行資料之後,會自動的將指標移動到下一行,如果沒有讀取到任何的資料,則返回null。
        mysqli_fetch_array(查詢語句返回的結果集) 返回只是一個數組,同時生成索引陣列和關聯陣列兩種形式
        mysqli_fetch_array(結果集資源,返回的內容的形式)
        返回的內容的形式包括 MYSQL_ASSOC(關聯陣列)   MYSQL_NUM (索引陣列)  MYSQL_BOTH(兩個都包含的陣列)
        mysqli_fetch_assoc(查詢語句返回的結果集)  返回值是關聯陣列
        mysqli_fetch_row(查詢語句返回的結果集)   返回值是索引陣列
      if(!$result){
        die("查詢失敗");
      }else if(mysqli_num_rows($result)==0){
        die("結果集為空");
      }else{
        while($arr=mysqli_fetch_array($result,MYSQL_ASSOC)){
          $res[]=$arr;
        }
        print_r($res);

      }