php数据库录入和输出,PHP数据库之CURD操作
前言
PHP作為一門(mén)服務(wù)端的腳本語(yǔ)言,既可以接受來(lái)自瀏覽器端的頁(yè)面請(qǐng)求,也可以將頁(yè)面的請(qǐng)求數(shù)據(jù)發(fā)送往數(shù)據(jù)庫(kù)中儲(chǔ)存起來(lái),讓頁(yè)面不在靜態(tài),處于動(dòng)態(tài)可以產(chǎn)生交互行為的狀態(tài),所以今天我們來(lái)認(rèn)識(shí)下有關(guān)于數(shù)據(jù)庫(kù)的一些東西。
數(shù)據(jù)庫(kù)的連接
首先
打開(kāi)xampp apache服務(wù)器和 MYSQL database
image.png
打開(kāi)localhost/phpmyadmin,創(chuàng)建一張數(shù)據(jù)表
image.png
根據(jù)關(guān)系數(shù)據(jù)庫(kù)第二范式,每個(gè)表需要設(shè)置一個(gè)主鍵,在這里一般需要將id設(shè)為主鍵,主鍵是一個(gè)表中的約束。這個(gè)約束,一張表只能有一個(gè),一般作為ID使用,這個(gè)約束一般給別人外鍵引用。這個(gè)約束的功能就是,不可重復(fù),保證了唯一性,正是這種特性,使得大多數(shù)人都把他作為表中ID的字段使用。同時(shí)為了提高了SQL Server系統(tǒng)的性能,我們可以設(shè)置索引,加快數(shù)據(jù)的查詢速度與減少系統(tǒng)的響應(yīng)時(shí)間 ,在這里我們將id設(shè)為索引。
完成這些操作我們可以在編輯器上編寫(xiě)我們的代碼連接服務(wù)器啦!!!
PHP連接數(shù)據(jù)庫(kù)的方法通過(guò) $link=mysqli_connect("數(shù)據(jù)庫(kù)服務(wù)器地址","數(shù)據(jù)庫(kù)登錄用戶","數(shù)據(jù)庫(kù)登錄密碼","數(shù)據(jù)庫(kù)名稱")
在這里數(shù)據(jù)庫(kù)服務(wù)器地址默認(rèn)是localhost:端口號(hào);數(shù)據(jù)庫(kù)登錄用戶默認(rèn)擁有服務(wù)器進(jìn)程的用戶的名稱,數(shù)據(jù)庫(kù)登錄密碼默認(rèn)值是”“。
$link = mysqli_connect(“l(fā)ocalhost”,"root","","mydb");
?>
寫(xiě)好后我們還要判斷下我們是否連接上了我們的數(shù)據(jù)庫(kù),不怕一萬(wàn),就怕萬(wàn)一埋。
判斷數(shù)據(jù)庫(kù)的連接正常
if(mysqli_connect_errno($link)){
echo "錯(cuò)誤號(hào):".mysqli_connect_errno($link);
echo "
錯(cuò)誤描述:".mysqli_connect_error($link);
echo "
錯(cuò)誤描述:網(wǎng)站錯(cuò)誤請(qǐng)聯(lián)系管理員";
exit;
}
在這里加入mysqli_connect_errno判斷語(yǔ)句,當(dāng)沒(méi)有連接上數(shù)據(jù)庫(kù)的時(shí)候,我們就輸出人性化提示報(bào)錯(cuò),然后就將程序結(jié)束。
我們介紹的CURD操作說(shuō)白了,就是增 刪 改 查,create! update !read !delete!
增刪改查之”增“
確定我們的數(shù)據(jù)庫(kù)連接正常后,我們就開(kāi)始我們?cè)鰟h改查的第一步,增!!
一張空表啥都沒(méi)有,所以需要我們錄入數(shù)據(jù)將其補(bǔ)滿也方便之后的前后臺(tái)交互查詢調(diào)用。我們?cè)谶@里需要使用以下語(yǔ)句
1.$sql= insert into 表名(表的字段1,表的字段2)values(字段1的值,字段2的值) ;
2.$sql= insert into 表名 表的字段一=‘字段一的值’,表的字段二=‘字段二的值’;
然后我們需要執(zhí)行查詢語(yǔ)句mysql_query() 僅對(duì) SELECT,SHOW,EXPLAIN 或 DESCRIBE 語(yǔ)句返回一個(gè)資源標(biāo)識(shí)符,如果查詢執(zhí)行不正確則返回 FALSE。對(duì)于其它類型的 SQL 語(yǔ)句,mysql_query() 在執(zhí)行成功時(shí)返回 TRUE,出錯(cuò)時(shí)返回 FALSE。
1.mysqli_query($link,$sql);
然后執(zhí)行關(guān)閉數(shù)據(jù)庫(kù)方法,關(guān)閉數(shù)據(jù)庫(kù)
mysqli_close($link);
我們來(lái)試著往數(shù)據(jù)庫(kù)里插入一個(gè)數(shù)據(jù)
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");//進(jìn)行編碼,防止中文出現(xiàn)亂碼
$sql = "insert into menu set name='叉燒包',price=20";
$result=mysqli_query($link,$sql);
mysqli_close($link);
image.png
增刪改查之”刪“
當(dāng)我們的數(shù)據(jù)錄入錯(cuò)誤的時(shí)候我們當(dāng)然就要把它刪去,保持?jǐn)?shù)據(jù)的準(zhǔn)確性
這里我們需要使用下列語(yǔ)句,這里需要借助索引減少搜查范圍
delete from 表名 where
我們來(lái)嘗試下
$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 條件
同樣我們來(lái)試試將叉燒包的價(jià)格改到288
$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
增刪改查之”查“
這應(yīng)該是數(shù)據(jù)庫(kù)里面最麻煩的部分,查詢數(shù)據(jù),各種姿勢(shì)查詢。
select 字段1,字段2... from 表名 where 條件
$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));//按關(guān)聯(lián)數(shù)組輸出所有結(jié)果集
mysqli_close($link);
?>
查詢結(jié)果
image.png
帶查詢限制的查詢語(yǔ)句
select 字段 from 表名 where 條件 limit size
limit 1表示只查詢記錄中的一條
$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);
?>
查詢結(jié)果
image.png
select 字段 from 表名 where 條件 limit start,size
limit start,size 從start位置查詢size條
image.png
排序
select 字段(*)from 表名 where 條件 order by 字段 desc|asc (降序、升序)
我們來(lái)看下效果
$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);
?>
我們可以看到表里的數(shù)據(jù)按id降序排序
image.png
分組統(tǒng)計(jì)查詢
select count(*) from 表名 可以獲得表里所有行數(shù)
$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);
?>
我們來(lái)看下效果
image.png
select count(*) as num from 表名 將count結(jié)果作為一個(gè)字段名檢索
$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
我們還可以通過(guò)分組 ground by 字段名 根據(jù)某個(gè)字段進(jìn)行分組查詢
group by + 多字段列表:
表示根據(jù)后面的字段來(lái)分組,如果只有1個(gè)字段,那只是根據(jù)這個(gè)字段的值來(lái)進(jìn)行一次分組就可以了;若后面有多個(gè)字段,那表示根據(jù)多字段的值來(lái)進(jìn)行層次分組,分組層次從左到右,即先按第1個(gè)字段分組,然后在第1個(gè)字段值相同的記錄中,再根據(jù)第2個(gè)字段的值進(jìn)行分組;接著第2個(gè)字段值相同的記錄中,再根據(jù)第3個(gè)字段的值進(jìn)行分組......依次類推。
這樣分組后,顯然每條記錄(field1,field2,...)的數(shù)據(jù)都是唯一 。
注意:
1.where條件在group by前面
2.select 后面的所有列中,沒(méi)有使用聚合函數(shù)的列,必須出現(xiàn)在 group by 后面!
$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);
?>
我們可以看到根據(jù)城市我們將城市為上海的成功分為一組
image.png
數(shù)據(jù)庫(kù)博大精深,待我們慢慢道來(lái),且聽(tīng)下回分解
總結(jié)
以上是生活随笔為你收集整理的php数据库录入和输出,PHP数据库之CURD操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 3d智能电视产品有哪些值得推荐的3d智能
- 下一篇: php程序员学什么语言好就业_php语言