PHP鏈接數據庫


1. PHP內置函數介紹
先介紹一些PHP的常用函數作為參考,再進行操作就很容易了。

1) 連接數據庫

 Mysql_connect(ip,用戶名,密碼) or die (‘連接失敗!’);

2) 選擇數據庫(兩種方法)

方法一: Mysql_query(‘use 數據庫名’);

方法二: Mysql_select_db(‘數據庫名’);

3)設置客戶端的字符編碼

如果遇到了亂碼的問題加入下面這串代碼就ok了。

sql_query(set names UTF-8);//解決字符亂碼問題

4)執行SQL語句

Mysql_query(SQL語句);

5)從結果集中取得一行作為數組返回查詢結果

mysql_fetch_row();

該函數主要用於查詢結果集,其區別在於函數的返回值不是一個字符串,而是一個數組。在取出最后一行后,函數將返回false,循環結束。就可以把結果集中的所有數據逐行取出並顯示。

實例:

<?php

$sql = mysql_query("select * from table_name");//將表table_name的全部數據存放到$sql

$row = mysql_fetch_row($sql);//獲取$sql里面的第一個數據作為數組存儲在$row中

if ($_POST["Submit"]=="查詢"){
//如果從前端接收到的value為‘查詢’

    $keyword= $_POST["red"];//從前端接收到的查詢關鍵字存儲到$name

    $sql = mysql_query("select * from table_name where color like '%".trim($keyword)."%'"); //執行模糊查詢

    $row = mysql_fetch_row($sql);  //逐行獲取查詢結果,返回值為數組

}

?>
​​​​​​

2. 連接數據庫
一般在公司里面都是框架的二次開發,不會涉及到自己寫連接數據庫的代碼。說白了,無非是數據庫連接的函數使用。

實例:

方式一:

<?php

$link=@Mysql_connect(‘URL’,’數據庫賬號’,’數據庫密碼’) or die (‘連接失敗!’);

Mysql_select_db(‘數據庫名稱’) or die (‘選擇失敗!’);

?>
方式二:

<?php
$myhost = 'localhost:3306'; // mysql服務器主機地址
$myusername = 'root'; // mysql用戶名
$mypassword = 'DJun'; // mysql用戶名密碼
$conn = mysqli_connect($myhost , $myusername , $mypassword );
if(! $connect )
{
die('連接失敗: ' . mysqli_error($connect ));
}

mysqli_query($connect , "set names utf8");// 設置編碼,防止中文亂碼
3. 實現增刪改查
增刪改查可以通過三種方式實現:命令化界面(CMD)、網頁代碼、軟件。

在命令化的界面和網頁代碼中,增刪改查對應四類SQL語句,原理都是一樣的。另外一種方式就是使用如Navicat類似軟件圖形化操作。簡單的為大家介紹四類SQL語句:

1)增添數據 
在標准SQL語句中的INSERT語句形式:

INSERT INTO tablename(表名) VALUES(列值);
實例:

INSERT INTO users(id, name, age) VALUES(1102, 'DJun', 21);
而在MySQL中還有另一種形式:

INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;
實例:

INSERT INTO users SET id = 1102, name = 'DJun', age = 21;
2)刪除數據
通用語法:

(補充:[WHERE Clause] 表示的是篩選數據的語句 )

DELETE FROM table_name [WHERE Clause]
實例:

DELETE FROM users WHERE name='DJun';
3)修改數據
通用語法:

UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]
實例:

UPDATE users SET name='DJun' WHERE id=1102;
4)查詢數據
通用語法:

(補充:* 號表示查詢全部的數據;若是該表中的每一列數據不是全部都要使用的話,將*改成如id,name等字段。數據量大的話這樣處理可增加查詢速度)

SELECT * FROM table_name [WHERE Clause];
實例:

用逗號分割,列出需要顯示的字段

select id,name,age from users;
數據量大的話均存在數據重復的問題,若需要查詢不重復記錄該如何處理?如果需要按照條件查詢該如何處理?如果是商品重復了,需要統計整合這個商品的數量該如何處理?

查詢不重復的數據
通用語法:

select distinct 字段 from 表名;
實例:

select distinct name from users;//查詢名字不相同的用戶;
select distinct name,age from students;//查詢名字和年齡同時不同的用戶
注意:

distinct必須放在最開頭
distinct只能使用需要去重的字段進行操作。 ----也就是說我distinct了name,age兩個字段,我后面想根據id進行排序,是不可以的,因為只 能name,age兩個字段進行操作.
distinct去重多個字段時。就是說:幾個字段同時重復時才會被過濾。
條件查詢
通用語法:

select 字段 from 表名 where 條件;
實例:

select * from users where sex='男' and age>20;
篩選出來的數據如果需要按照年齡來升序(ASC)或降序(DESC)排序的話:

只需在SELECET的語句最后加上 by age ASC或 by age DESC。

如果希望只取出年齡最小的前五個人的數據的話:

select ... [limit 起始偏移量,行數]

SELECT * from users ORDER BY age ASC limit 0,5;
數據整合(聚合)
通用語法:

select 聚合函數(字段) 表名 [where Clause] [group by field1,field2...] [with rollup] [having 條件];
補充:

1. 聚合函數(字段) ,常用的四個聚合函數 : sum(求和)、count(*)(記錄數)、max(最大值)、min(最小值)。

2.group by關鍵字 表示要進行分類聚合的字段。比如要按照部門分類統計員工數量,部門就應該寫在group by 后面。

3.with rollup 是可選語法,表明是否對分類聚合后的結果進行再匯總

4.having 關鍵字表示對分類后的結果再進行條件過濾。

實例:

//得到與id為1的年齡相同的用戶的用戶名並按照這些用戶的注冊時間按升序排列
SELECT username,count(1) FROM users GROUP BY age ORDER BY createtime ASC;

//得到與id為1的年齡相同的用戶且人數大於4的用戶名
SELECT username,count(1) FROM users GROUP BY age HAVING count(1)>4;

//統計與id為1的年齡相同的用戶的薪水總額,最低薪資,最高薪資
SELECT count(1),min(salary),max(salary) FROM users GROUP BY age;
實現增刪查改,無非是執行相應的sql語句。或者說是執行動態的sql 語句,可以執行在程序中給sql 語句的某個參數賦值后,執行sql實現功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM