ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

php pdo操作mysql

2021-06-28 05:31:07  阅读:215  来源: 互联网

标签:where mysql pdo sql query php config


pdo链接MySQL数据库

/1.php

<?php
//链接mysql数据库

$config = [
    'host'=>'127.0.0.1',
    'user'=>'root',
    'password'=>'root',
    'database'=>'php',
    'charset'=>'utf8'
];
$dsn = sprintf("mysql:host=%s;dbname=%s;charset=%s",$config['host'],$config['database'],$config['charset']);

try{
    $pdo = new PDO($dsn,$config['user'],$config['password']);
    var_dump($pdo);
}catch (PDOException $e){
    die($e->getMessage());
}

浏览器访问1.php 查看结果

pdo操作mysql执行语句

/2.php

<?php

//pdo操作执行语句

$config = [
    'host' => '127.0.0.1',
    'user' => 'root',
    'password' => 'root',
    'database' => 'php',
    'charset' => 'utf8'
];
$dsn = sprintf("mysql:host=%s;dbname=%s;charset=%s", $config['host'], $config['database'], $config['charset']);

try {
    $pdo = new PDO($dsn, $config['user'], $config['password']);

    //插入
    $sql = "INSERT INTO student (name,age) VALUES ('李五','24'),('王小红','26')";
    echo $pdo->exec($sql);

    //更新
    $sql = "UPDATE student SET age = '34' where id = 5";
    echo $pdo->exec($sql);

    //删除
    $sql = "DELETE FROM student where id = 5";
    echo $pdo->exec($sql);

} catch (Exception $e) {
    die($e->getMessage());
}

浏览器访问2.php 修改配置查看插入,更新,删除效果

pdo操作mysql查询语句

/3.php

<?php
//pdo操作查询语句

$config = [
    'host' => '127.0.0.1',
    'user' => 'root',
    'password' => 'root',
    'database' => 'php',
    'charset' => 'utf8'
];
$dsn = sprintf("mysql:host=%s;dbname=%s;charset=%s", $config['host'], $config['database'], $config['charset']);

try {
    $pdo = new PDO($dsn, $config['user'], $config['password']);

    //设置返回结果集类型
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    //$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM);
    //$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

    //读取
    $sql = "select * from student";
    $query = $pdo->query($sql);
    $rows = $query->fetchAll();
    echo "<pre>";
    print_r($rows);

    //循环结果集
    $sql = "select * from student";
    $query = $pdo->query($sql);
    $rows = $query->fetch();
    while($field = $query->fetch()){
        echo sprintf("name:%s,age:%s<br>",$field['name'],$field['age']);
    }

} catch (Exception $e) {
    die($e->getMessage());
}

浏览器访问3.php 修改配置查看效果

pdo prepare预处理 可防止SQL注入

/4.php

<?php
//pdo prepare预处理 可防止SQL注入

$config = [
    'host' => '127.0.0.1',
    'user' => 'root',
    'password' => 'root',
    'database' => 'php',
    'charset' => 'utf8'
];
$dsn = sprintf("mysql:host=%s;dbname=%s;charset=%s", $config['host'], $config['database'], $config['charset']);

try {
    $pdo = new PDO($dsn, $config['user'], $config['password']);

    //设置返回结果集类型
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

    //SQL注入
    //http://www.example.com:88/php/pdo/4.php?id=2 or id>1
    //读取
    $sql = "select * from student where id = {$_GET['id']}";
    $query = $pdo->query($sql);
    $rows = $query->fetchAll();
    echo "<pre>";
    print_r($rows);

    //prepare预处理 可防止SQL注入
    $sql = "select * from student where id = :id";
    $query = $pdo->prepare($sql);
    $query->execute([':id'=>$_GET['id']]);
    $rows = $query->fetchAll();
    echo "<pre>";
    print_r($rows);


} catch (Exception $e) {
    die($e->getMessage());
}

浏览器访问4.php 修改配置查看效果

pdo操作mysql的封装

/PdoMysql.php

<?php
namespace Database;

use PDO;

class PdoMysql{

    protected $link;

    protected $options =[
        'table'=>'',
        'fields'=>'*',
        'order'=>'',
        'limit'=>''
    ];

    //初始化
    public function __construct($config)
    {
        $this->connect($config);
    }

    //连接MySQL
    protected function connect(array $config){
        $dsn = sprintf("mysql:host=%s;dbname=%s;charset=%s", $config['host'], $config['database'], $config['charset']);
        $this->link = new PDO($dsn, $config['user'], $config['password']);
    }

    //查询
    public function query(string $sql, array $values=[]){
        $query = $this->link->prepare($sql);
        $query->execute($values);
        return $query->fetchAll();
    }

    //执行
    public function execute(string $sql, array $values = []){
        $query = $this->link->prepare($sql);
        return $query->execute($values);
    }

    //表名
    public function table(string $table){
        $this->options['table'] = $table;
        return $this;
    }

    //查询字段
    public function fields(...$fields){
        $fields = '`'. implode('`,`',$fields).'`';
        $this->options['fields'] = $fields;
        return $this;
    }

    //limit
    public function limit(...$limit){
        $limit = implode(',',$limit);
        $this->options['limit'] = " limit " . $limit;
        return $this;
    }

    //order
    public function order(string $order){
        $this->options['order'] = " order by " . $order;
        return $this;
    }

    //条件
    public function where(string $where){
        $this->options['where'] = " where " . $where;
        return $this;
    }

    //查询语句生成器
    public function get(){
        //select * from student where order limit

        $sql = "select {$this->options['fields']} from {$this->options['table']} {$this->options['where']} {$this->options['order']} {$this->options['limit']}";
        return $this->query($sql);
    }

    //插入
    public function insert(array $values){
        //insert into student () values ();
        $fields = "`" . implode('`,`',array_keys($values)) . "`";
        $placeholders = implode(',',array_fill(0,count($values),'?'));
        $sql = "insert into {$this->options['table']} ($fields) values ($placeholders)";

        return $this->execute($sql,array_values($values));
    }

    //更新
    public function update(array $values){
        //update student set name=?,age=?
        if(empty($this->options['where'])){
            throw new \Exception('update需要条件');
        }
        $fields = implode('=?,',array_keys($values))."=?";
        $sql = "update {$this->options['table']} set ($fields) {$this->options['where']}";
        return $this->execute($sql,array_values($values));
    }

    //删除
    public function delete(){
        //delete fromm student where
        if(empty($this->options['where'])){
            throw new \Exception('delete需要条件');
        }
        $sql = "delete from {$this->options['table']} {$this->options['where']}";
        return $this->execute($sql);
    }
}

测试PdoMysql.php封装

/5.php

<?php
include 'PdoMysql.php';
use Database\PdoMysql;

//数据库配置
$config = [
    'host' => '127.0.0.1',
    'user' => 'root',
    'password' => 'root',
    'database' => 'php',
    'charset' => 'utf8'
];
try{

    $pdo = new PdoMysql($config);


    //查询
    $r = $pdo->query('select * from student where id=:id',[":id"=>4]);
    var_dump($r);

    //执行
//    $sql = "INSERT INTO student SET name=:name,age=:age";
//    $values = ['name'=>'梁梅','age'=>'33'];
//    $r = $pdo->execute($sql,$values);
//    var_dump($r);

//    $r = $pdo->table('student')
//        ->fields('name','age')
//        ->limit(1,5)
//        ->where('id>5')
//        ->order("id desc")
//        ->get();
//    echo "<pre>";
//    var_dump($r);

//    //insert
//    $r = $pdo->table('student')->insert(['name'=>'小花','age'=>'27']);
//    var_dump($r);

//    //update
//    $r = $pdo->table('student')->where("id=11")->update(['name'=>'小花','age'=>'25']);
//    var_dump($r);

    //delete
//    $r = $pdo->table('student')->where("id=11")->delete();
//    var_dump($r);
}catch (Exception $e){
    die($e->getMessage());
}

浏览器访问5.php,修改配置查看效果

标签:where,mysql,pdo,sql,query,php,config
来源: https://www.cnblogs.com/hu308830232/p/14942906.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有