DB.php代码
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2020/1/1
* Time: 11:43
*/
class DB
{
/**dsn mysql连接
* @var mixed
*/
private $dsn;
/**mysql 数据库用户名
* @var mixed
*/
private $user;
/**mysql数据库密码
* @var mixed
*/
private $password;
/**mysql数据库字符集
* @var mixed
*/
private $charset;
/**pdo对象
* @var PDO
*/
private $pdoInstance;
/**sql 对象
* @var PDOStatement
*/
private $pdoStmt;
/**
* DB constructor.
* @param array $config
*/
public function __construct($config = [])
{
$this->dsn=$config['dsn'];
$this->user=$config['user'];
$this->password=$config['password'];
$this->charset=$config['charset'];
$this->connect();
}
/**
* 链接数据库
*/
private function connect(){
if(!$this->pdoInstance){
$options=[
PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES'.$this->charset
];
//获取pdo对象
$this->pdoInstance = new PDO($this->dsn, $this->user, $this->password);
//设置pdo对象错误处理方式
$this->pdoInstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
}
/**通过sql query 数据
* @param $sql
* @param array $parameters
* @return array
* @throws MySQLException
*/
public function query($sql,$parameters=[]){
if(!is_array($parameters)){
$parameters=[$parameters];
}
// var_dump($parameters);exit();
$this->pdoStmt=$this->pdoInstance->prepare($sql);
$index=1;
foreach ($parameters as $parameter){
$this->pdoStmt->bindValue($index++,$parameter,PDO::PARAM_INT);
}
$execRe=$this->pdoStmt->execute();
if(!$execRe){
throw new MySQLException($this->pdoStmt->errorInfo()[2],$this->pdoStmt->errorCode());
}
$data=$this->pdoStmt->fetchAll(PDO::FETCH_ASSOC);
return $data;
}
}
class MySQLException extends Exception{
}
index.php代码
<?php
/**
* 操作mysql数据库
* 1.建立链接
* 2.写sql
* 3.执行
* 4.处理结果
* 5.关闭
*/
require_once './DB.php';
class App{
private $db;
public function __construct()
{
$this->db=new DB([
'dsn'=>'mysql:dbname=bick;host=localhost;port:3306;',
'user'=>'root',
'password'=>'root',
'charset'=>'utf8',
]);
}
/**
* 入口方法
*/
public function run(){
try{
$pageSize=$_GET['page_size'] ?? 10;
$pageIndex=$_GET['page_index'];
$data=$this->pagination(intval($pageSize),intval($pageIndex));
$count=$this->getCount();
$totalPage=ceil($count/$pageSize);
$info=[
'count'=>$count,
'total_page'=>$totalPage,
'data'=>$data,
];
return $this->returnSuccessData($info);
}catch (Exception $e){
return $this->returnData($e->getCode(),$e->getMessage());
}
}
/**
* 分页查询
* @param $pageSize
* @param $pageIndex
* @return array
* @throws MySQLException
*/
public function pagination($pageSize,$pageIndex){
$sql='select id,cateid from bk_article limit ? offset ?';
$limit=$pageSize;
$offset=$pageSize*($pageIndex-1);
$data=$this->db->query($sql,[$limit,$offset]);
return $data;
}
/**
* 一共多少页
* @return mixed
* @throws MySQLException
*/
public function getCount(){
$sql='select count(id) as count from bk_article';
$data=$this->db->query($sql);
return $data[0]['count'];
}
/**
* 返回正常数据
* @param $data
* @return string
*/
public function returnSuccessData($data){
$content=[
'code'=>0,
'message'=>'Success',
'info'=>$data,
];
return json_encode($content);
}
/**
* 返回数据
* @param $code
* @param $message
* @param array $data
* @return string
*/
public function returnData($code,$message,$data=[]){
$content=[
'code'=>0,
'message'=>$message,
'info'=>$data,
];
return json_encode($content);
}
}
$app=new App();
$re=$app->run();
echo $re;
还不快抢沙发