PHP數據庫之CURD操作

前言

PHP作為一門服務端的腳本語言,既可以接受來自瀏覽器端的頁面請求,也可以將頁面的請求數據發送往數據庫中儲存起來,讓頁面不在靜態,處于動態可以產生交互行為的狀態,所以今天我們來認識下有關于數據庫的一些東西。

數據庫的連接

首先

  • 打開xampp apache服務器和 MYSQL database


    image.png
  • 打開localhost/phpmyadmin,創建一張數據表


    image.png

    根據關系數據庫第二范式,每個表需要設置一個主鍵,在這里一般需要將id設為主鍵,主鍵是一個表中的約束。這個約束,一張表只能有一個,一般作為ID使用,這個約束一般給別人外鍵引用。這個約束的功能就是,不可重復,保證了唯一性,正是這種特性,使得大多數人都把他作為表中ID的字段使用。同時為了提高了SQL Server系統的性能,我們可以設置索引,加快數據的查詢速度與減少系統的響應時間 ,在這里我們將id設為索引。

完成這些操作我們可以在編輯器上編寫我們的代碼連接服務器啦?。?!

PHP連接數據庫的方法通過 $link=mysqli_connect("數據庫服務器地址","數據庫登錄用戶","數據庫登錄密碼","數據庫名稱")

在這里數據庫服務器地址默認是localhost:端口號;數據庫登錄用戶默認擁有服務器進程的用戶的名稱,數據庫登錄密碼默認值是”“。

<?php 
    $link = mysqli_connect(“localhost”,"root","","mydb");
?>

寫好后我們還要判斷下我們是否連接上了我們的數據庫,不怕一萬,就怕萬一埋。

判斷數據庫的連接正常

if(mysqli_connect_errno($link)){
    echo "錯誤號:".mysqli_connect_errno($link);
    echo "<br>錯誤描述:".mysqli_connect_error($link);
    echo "<br>錯誤描述:網站錯誤請聯系管理員";
    exit;
}

在這里加入mysqli_connect_errno判斷語句,當沒有連接上數據庫的時候,我們就輸出人性化提示報錯,然后就將程序結束。

我們介紹的CURD操作說白了,就是增 刪 改 查,create! update !read !delete!

增刪改查之”增“

確定我們的數據庫連接正常后,我們就開始我們增刪改查的第一步,增?。?/h4>

一張空表啥都沒有,所以需要我們錄入數據將其補滿也方便之后的前后臺交互查詢調用。我們在這里需要使用以下語句

 1.$sql= insert into 表名(表的字段1,表的字段2)values(字段1的值,字段2的值) ;
  2.$sql= insert into 表名 表的字段一=‘字段一的值’,表的字段二=‘字段二的值’;

然后我們需要執行查詢語句mysql_query() 僅對 SELECT,SHOW,EXPLAIN 或 DESCRIBE 語句返回一個資源標識符,如果查詢執行不正確則返回 FALSE。對于其它類型的 SQL 語句,mysql_query() 在執行成功時返回 TRUE,出錯時返回 FALSE。

  1.mysqli_query($link,$sql);

然后執行關閉數據庫方法,關閉數據庫

   mysqli_close($link);

我們來試著往數據庫里插入一個數據

 $link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");//進行編碼,防止中文出現亂碼
$sql = "insert into menu set name='叉燒包',price=20";
$result=mysqli_query($link,$sql);
mysqli_close($link);
image.png

增刪改查之”刪“

當我們的數據錄入錯誤的時候我們當然就要把它刪去,保持數據的準確性

這里我們需要使用下列語句,這里需要借助索引減少搜查范圍

delete from 表名 where

我們來嘗試下

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "delete from menu where id=13";
$result=mysqli_query($link,$sql);
mysqli_close($link);
?>
刪除前

刪除后

增刪改查之”改“

  update 表名 set 字段1='值',字段2='值' where 條件

同樣我們來試試將叉燒包的價格改到288

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "update menu set price='288' where id=15";
$result=mysqli_query($link,$sql);
mysqli_close($link);
?>
image.png

增刪改查之”查“

這應該是數據庫里面最麻煩的部分,查詢數據,各種姿勢查詢。

select 字段1,字段2... from 表名 where 條件

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select name,price from menu where id=15";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));//按關聯數組輸出所有結果集
mysqli_close($link);
?>

查詢結果

image.png

帶查詢限制的查詢語句

select 字段 from 表名 where 條件 limit size
limit 1表示只查詢記錄中的一條

  <?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select * from menu where price='288' limit 1";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>

查詢結果

image.png

select 字段 from 表名 where 條件 limit start,size
limit start,size 從start位置查詢size條

image.png

排序

select 字段(*)from 表名 where 條件 order by 字段 desc|asc (降序、升序)
我們來看下效果

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select * from menu order by id DESC";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>

我們可以看到表里的數據按id降序排序


image.png

分組統計查詢

select count(*) from 表名 可以獲得表里所有行數

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select count(*) from menu";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);

?>
我們來看下效果


image.png

select count(*) as num from 表名 將count結果作為一個字段名檢索

  <?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select count(*) as num from menu";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>
image.png

我們還可以通過分組 ground by 字段名 根據某個字段進行分組查詢
group by + 多字段列表:

表示根據后面的字段來分組,如果只有1個字段,那只是根據這個字段的值來進行一次分組就可以了;若后面有多個字段,那表示根據多字段的值來進行層次分組,分組層次從左到右,即先按第1個字段分組,然后在第1個字段值相同的記錄中,再根據第2個字段的值進行分組;接著第2個字段值相同的記錄中,再根據第3個字段的值進行分組......依次類推。

這樣分組后,顯然每條記錄(field1,field2,...)的數據都是唯一 。

注意:
1.where條件在group by前面
2.select 后面的所有列中,沒有使用聚合函數的列,必須出現在 group by 后面!
<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select * from student where city='上海' group by city";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>

我們可以看到根據城市我們將城市為上海的成功分為一組


image.png

數據庫博大精深,待我們慢慢道來,且聽下回分解

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容