摘要:class User { public $name; public $email; public $work; public $age; &nbs
class User
{
public $name;
public $email;
public $work;
public $age;
public $sex;
public $password;
public $status;
public $create_time;
public $id;
/**
* User constructor.
* @param $name
* @param $email
* @param $work
* @param $age
* @param $sex
* @param $password
* @param $status
* @param $create_time
*/
public function __construct($name, $email, $work, $age, $sex, $password, $status, $create_time)
{
$this->name = $name;
$this->email = $email;
$this->work = $work;
$this->age = $age;
$this->sex = $sex;
$this->password = $password;
$this->status = $status;
$this->create_time = $create_time;
}
}
class PdoDao
{
public $pdo;
/**
* @param $obj 增加一条记录
*/
public function insertOb($obj)
{
//1.处理sql 语句
// $sql ="insert into user (name,email,work,age,sex,password,status,create_time) values (:name,:email,:work,:age,:sex,:password,:status,:create_time)";
$data = (array)$obj;
$obj = (array)$obj;
$keys = implode(",", array_keys($obj));
$sql = 'insert into user ' . '(' . $keys . ')';
foreach ($obj as $k => $v) {
$obj[$k] = ':' . $k;
}
$values = implode(",", array_values($obj));
$sql = $sql . ' values ' . ' ( ' . $values . ' ) ';
$stmt = $this->pdo->prepare($sql);
$datas = [];
//2.对象转数组 并 封装成需求 数组
foreach ($data as $k => $v) {
$datas[':' . $k] = $v;
}
//3.执行操作
if ($stmt->execute($datas)) {
echo "执行成功";
echo "最后插入的ID:" . $this->pdo->lastInsertId();
} else {
echo "执行失败";
var_dump($stmt->errorinfo());
}
}
/**
* 更新一条记录
*/
public function UpdateOb($arr)
{
//1. 根据参数动态生成 sql 预处理
//$sql ="update user set name=? where id=?";
// $sql = " UPDATE user SET name=:name WHERE id=:id ";
$keys = [];
foreach ($arr as $k => $v) {
if ($k == 'id') {
echo 'xxx';
} else {
$keys[$k] = ':' . $k;
}
}
$link='';
foreach ($keys as $k =>$v){
$link = $link .$k .'='.$v .',';
}
$link = substr($link,0,strlen($link)-1);
$sql = 'UPDATE user SET ' . $link . ' WHERE id=:id ';
//预处理SQL
$stmt = $this->pdo->prepare($sql);
$datas = [];
//2.数据绑定
foreach ($arr as $k => $v) {
$datas[':' . $k] = $v;
}
echo "<pre>";
print_r($datas);
//3.执行操作
if ($stmt->execute($datas)) {
echo "执行成功";
echo "更改的 行" . $stmt->rowCount();
} else {
echo "执行失败";
var_dump($stmt->errorinfo());
}
}
/**
* 查询记录
*/
public function SelectOb($id)
{
//1. 根据参数动态生成 sql 预处理
$sql = " SELECT * FROM user WHERE id >=:id ";
//预处理SQL
$stmt = $this->pdo->prepare($sql);
//2.数据绑定
$datas = [':id'=>$id];
//3.执行操作
$stmt->execute($datas);
echo "<pre>";
//推荐这种方式来获取查询结果
while ($row=$stmt->fetch())
{
var_dump($row);
}
}
public function DbConnect()
{
$dsn = 'mysql:host=localhost;dbname=php_edu;port=3306;charset=utf8'; //数据源 = 数据库类型:host=主机地址;dbname=数据库名;port=数据库端口;
$username = 'root';//用户名
$password = 'stan183';//密码
try {
//1.连接 PDO
$this->pdo = new PDO($dsn, $username, $password); //
//2.操作数据库
//3.关闭PDO2种方式 (关闭不是必须,脚本结束会自动关闭,连接资源不够,也会把最早的关闭,建议显示关闭)
// $pdo = null;
// unset($pdo); //比较暴力
echo '连接成功。。。';
} catch (PDOException $e) {
die('Could not connect to the database:<br/>' . $e);
}
}
/**
* 数组 转 对象
*
* @param array $arr 数组
* @return object
*/
function array_to_object($arr)
{
if (gettype($arr) != 'array') {
return;
}
foreach ($arr as $k => $v) {
if (gettype($v) == 'array' || getType($v) == 'object') {
$arr[$k] = (object)array_to_object($v);
}
}
return (object)$arr;
}
/**
* 对象 转 数组
*
* @param object $obj 对象
* @return array
*/
function object_to_array($obj)
{
$obj = (array)$obj;
$obs = [];
foreach ($obj as $k => $v) {
if (gettype($v) == 'resource') {
return;
} else if (gettype($v) == 'object' || gettype($v) == 'array') {
$obj[$k] = (array)object_to_array($v);
} else {
$obs[':' . $k] = $v;
}
}
return $obs;
}
}
//$sql ="insert into user (name,email,work,age,sex,password,status,create_time)values(:name,:email,:work,:age,:sex,:password,:status,:create_time)"; //insert
//$sql ="insert into user set name=:na,email=:em,work=:wk,age=:ag,sex=:se,password=:psd,status=:sta,creat_time=:ct";
//$sql =" UPDATE user (name,email,work,age,sex,password,status,creat_time)values(:na,:em,:wk,:ag,:se,:psd,:sta,:ct)"; //update?
//$sql ="insert into user (name,email,work,age,sex,password,status,creat_time)values(:na,:em,:wk,:ag,:se,:psd,:sta,:ct)"; //query
//$stmt=$pdo->prepare($sql);
//
//
//$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//
//
$name = '周星星';
$work = '工程师';
$sex = 1;
$age = 20;
$email = 'neo123@gmail.com';
$st = 1;
$ct = 2121;
$psd = '密码';
$user = new User($name, $email, $work, $age, $sex, $psd, $st, $ct);
$Dao = new PdoDao();
$Dao->DbConnect();
$data = [
'id'=>22,
'name' => 'change',
'sex' => 0,
'age' => 11,
'status' => 0,
'create_time' => '22222',
'password' => 'no',
'email' => '我是email'
];
//增加一条记录
$Dao->insertOb($user);
//更新数据
$Dao->UpdateOb($data);
//根据 id 查询
$Dao->SelectOb('12');
批改老师:查无此人批改时间:2018-11-19 15:19:18
老师总结:写的不错,数据库操作熟悉了,php对你来说就没什么难的了。