php写接口curd,接口实战(数据库的CURD操作)
interface iCurd{
// ? ?增加數(shù)據(jù)
public function create($data);
//讀取數(shù)據(jù)
public function read();
//更新數(shù)據(jù)
public function update($data,$where);
//刪除數(shù)據(jù)
public function delete($where);
}
//創(chuàng)建工作類Db,來實現(xiàn)iCurd接口
// 創(chuàng)建Db類, 實現(xiàn)iCurd接口,完成基本的數(shù)據(jù)庫操作
class Db implements iCurd
{
//數(shù)據(jù)庫的連接對象
protected $pdo = null;
// 數(shù)據(jù)表名
protected $table;
// 構(gòu)造方法: 連接數(shù)據(jù)庫,并設(shè)置默認(rèn)數(shù)據(jù)表名稱
public function __construct($dsn, $user, $password, $table='staff')
{
$this->pdo = new PDO($dsn, $user, $password);
$this->table = $table;
}
// 讀取
public function read($fields='*', $where='', $limit='0, 5')
{
// 設(shè)置查詢條件
$where = empty($where) ? '' : ' WHERE ' . $where;
// 設(shè)置顯示數(shù)量
$limit = ' LIMIT ' . $limit;
// 預(yù)處理查詢操作
$sql = 'SELECT '.$fields.' FROM '.$this->table.$where.$limit;
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
// 返回二維數(shù)組表示的查詢結(jié)果集
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// 新增, 參數(shù)是數(shù)組: 新記錄的鍵值對
public function create($data)
{
// 字段列表
$fields = ' (name,age,sex,position,mobile,hiredate)';
// 值列表
$values = '(:name,:age,:sex,:position,:mobile,:hiredate)';
// 創(chuàng)建SQL語句
$sql = 'INSERT INTO '.$this->table.$fields.' VALUES '.$values;
// 預(yù)處理執(zhí)行新增操作
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
// 返回新增數(shù)量, 新增記錄的ID組成的數(shù)組
return [
'count'=>$stmt->rowCount(),
'id'=>$this->pdo->lastInsertId()
];
}
// 更新, 為了數(shù)據(jù)安全, 不允許無條件更新
public function update($data, $where)
{
// 難點在于SET 參數(shù)的處理上,利用傳入的$data數(shù)組,進(jìn)行拆裝
// 獲取數(shù)組的鍵名組成的數(shù)組
$keyArr = array_keys($data);
$set = '';
// 遍歷鍵名表示的字段列表,拼裝預(yù)處理需要的sql語句,注意占符符的表示
foreach ($keyArr as $value) {
$set .= $value . ' = :' .$value. ', ';
}
// 去掉最后一個逗號, 注意每個逗號后有一個空格,去除時也要帶上這個空格
$set = rtrim($set,', ');
// 預(yù)處理執(zhí)行更新操作
$sql = 'UPDATE '.$this->table.' SET '.$set .' WHERE ' .$where;
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
// 返回被更新的記錄數(shù)量
return $stmt->rowCount();
}
// 刪除: 與更新一樣, 這也是危險的寫操作, 不允許無條件刪除
public function delete($where)
{
// 預(yù)處理執(zhí)行刪除操作
$sql = 'DELETE FROM '.$this->table.' WHERE '.$where;
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
return $stmt->rowCount();
}
}
//客戶端的測試代碼
$dsn='mysql:host=127.0.0.1;dbname=php';
$user='root';
$password='root';
$db=new Db($dsn,$user,$password);
foreach ($db->read() as $item){
print_r($item);echo '
';
}
echo '
';
//$data=[
// ? ?'name'=>'郭靖',
// ? ?'age'=>30,
// ? ?'sex'=>1,
// ? ?'position'=>'金刀駙馬',
// ? ?'mobile'=>'07916586437',
// ? ?'hiredate'=>time()
//];
//$res=$db->create($data);
//echo '成功地新增了'.$res['count'].'條記錄,最新記錄的id是:'.$res['id'];
//echo '
';
//更新
//$data=['age'=>40,'position'=>'抗金英雄'];
//$where='id=19';
//echo '成功地更新了:'.$db->update($data,$where).'條記錄';
$where='id=19';
echo '成功地刪除了:'.$db->delete($where).'條記錄';
總結(jié)
以上是生活随笔為你收集整理的php写接口curd,接口实战(数据库的CURD操作)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识积累】腾讯云CentOS 7服务器
- 下一篇: Spirng 痛苦源码学习(一)——总起