两个页面的代码,刚学面向对象,绕晕了已经。
////////////////////////////这里是index.php页面代码
require( 'Query.php' );
class Db{
protected static $pdo = null;
public static function connection(){
self::$pdo = new PDO('mysql:host=127.0.0.1;dbname=php10-7','root','root');
}
//静态方法的重载
public static function __callStatic($name,$arguments){
//链接上数据库
self::connection();
//实例化查询类
$query = new Query(self::$pdo);
//访问query中的方法
return call_user_func_array([$query,$name],[$arguments[0]]);
}
}
$cats = Db::table('msg')
->field('id,username,content')
->where('id >= 2')
->select();
foreach($cats as $cat){
print_r($cat);echo '<br>';
}
?>
//////////////////////////////////这里是Query.php页面代码
<?php
//常用的数据库查询操作
class Query{
//链接对象
public $pdo = null;
//数据库名称
public $table = '';
//字段列表
public $field = '';
//查询条件
public $where = '';
//显示数量
public $limit = 0;
//构造方法
public function __construct(PDO $pdo){
$this->pdo = $pdo;
}
public function table($table){
$this->table = $table;
return $this;
}
public function field($field){
$this->field = $field;
return $this;
}
//设置查询条件
public function where($where){
$this->where = $where;
return $this;
}
//设置显示数量
public function limit($limit){
$this->limit = $limit;
return $this;
}
//创建SQL语句
public function select(){
//设置查询条件
$field = empty($this->field)?'*':$this->field;
$where = empty($this->where)?'':'WHERE'.$this->where;
$limit = empty($this->limit)?'':'LIMIT'.$this->limit;
$sql = 'SELECT'.$field.'FROM'.$this->table.$where.$limit;
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
?>
转json格式输出看看
你echo输出一下$sql语句,你会发现sql语句少了一些空格。把这些空格拼接上。
谢谢大佬指点,真的是太细了,现在OOP这块都快绕晕了。
我结帖结错人了,咋整啊
来个大神救救孩子吧。
– sunvenet 2年前