最新消息:

PDO 参数化查询

PHP looice 1023浏览 0评论

不使用bindprepare的话,PDO将无任何意义

class apdo{
    var $pdo;

    public function __construct() {
        $this->pdo = new PDO("mysql:host=localhost;dbname=dbname", "username", "pass");
    }
    $sql = "INSERT INTO table(name, value) VALUES (:name, :value)" ;
    $stm = $pdo->prepare($sql);
    $stm->bindValue(':name', "value");
    $stm->execute();
    $stm->fetchAll(PDO::FETCH_ASSOC);
}

自己封装的pdo类,主要是完成prepare,bind之前的查询字符串拼接

class dal {

    var $pdo;

    public function __construct() {
        $this->pdo = new PDO("mysql:host=localhost;dbname=dbname", "username", "pass");
    }

    function select($table) {
        $sql = "select * from " . $table;
        return $sql;
    }

    function delete($table) {
        $sql = "delete from " . $table;
        return $sql;
    }

    function update($table, $column) {
        $sql = "update " . $table . " set ";
        $count = count($column) - 1;
        for ($i = 0; $i < $count; $i++) {
            $sql = $sql . "`" . $column[$i] . "`" . "=:" . $column[$i] . " , ";
        }
        $sql = $sql . "`" . $column[$count] . "`" . "=:" . $column[$count] . " ";
        return $sql;
    }

    function insert($table, $column) {
        $sql = "insert into `" . $table . "`(";

        $count = count($column) - 1;
        for ($i = 0; $i < $count; $i++) {
            $sql = $sql . "`" . $column[$i] . "`" . ",";
        }
        $sql = $sql . "`" . $column[$count] . "`) values(";
        for ($i = 0; $i < $count; $i++) {
            $sql = $sql . ":" . $column[$i] . ",";
        }
        $sql = $sql . ":" . $column[$count] . ")";
        return $sql;
    }

    function where($whfield) {
        $sql = " where ";
        $count = count($whfield) - 1;
        for ($i = 0; $i < $count; $i++) {
            $sql = $sql . "`" . $whfield[$i][0] . "`" . $whfield[$i][1] . ":" . $whfield[$i][0] . " and ";
        }
        $sql = $sql . "`" . $whfield[$count][0] . "`" . $whfield[$count][1] . ":" . $whfield[$count][0] . " ";
        return $sql;
    }

    function wherein($whfield, $pcount) {
        $sql = " where " . $whfield . " in(";
        $count = $pcount - 1;
        for ($i = 0; $i < $count; $i++) {
            $sql = $sql . ":p" . $i . ",";
        }
        $sql = $sql . ":p" . $count . ")";
        return $sql;
    }

    function limit($page, $pagesize) {
        $begin = ($page - 1) * $pagesize;
        return (" limit " . $begin . "," . $pagesize);
    }

    function prepares($count) {
        $prepares = [];
        for ($i = 0; $i < $count; $i++) {
            $prepares[] = ":p" . $i;
        }
        return $prepares;
    }

    function bindprepare($stm, $prepare, $value) {
        $count = count($prepare);
        for ($i = 0; $i < $count; $i++) {
            $pstr = ":" . $prepare[$i];
            $stm->bindValue($pstr, $value[$i]);
        }
        return $stm;
    }

}

调用

    function select($id) {
        $dal = new dal();
        $pdo = $dal->pdo;
        $sql = $dal->select("table") . $dal->where([["id", "="]]);
        $stm = $pdo->prepare($sql);
        $dal->bindprepare($stm, ["id"], [$id]);
        $stm->execute();
        return $stm->fetchAll(PDO::FETCH_ASSOC);
    }

转载请注明:looice » PDO 参数化查询

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址