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);
}