pdo 数据库操做抽象类

任何语言都有数据库操做类,对于php也是如此,早期的php由于支持几乎全部的数据库,所以成为php风靡起来的缘由之一。在php5版本之后,出现了pdo-php data object,数据库抽象类,几乎全部的数据库均可以经过pdo来处理,耦合度低,易于项目的迁移,好比第一个版本的项目是创建在mysql下,后期迁移能够到mssql、sql server等等。php

pdo的又一大好处就是防止sql注入。html

一、利用pdo的quote()函数来过滤用户在输入框输入的特殊字符。mysql

直接上代码sql

<?php 
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
try{
    $pdo=new PDO('mysql:host=localhost;dbname=imooc','root','root');    
    //echo $pdo->quote($username);
    //$sql="select * from user where username='{$username}' and password='{$password}'";
    //echo $sql;
    //经过quote():返回带引号的字符串,过滤字符串中的特殊字符
    $username=$pdo->quote($username);
    $sql="select * from user where username={$username} and password='{$password}'";
    echo $sql;
    $stmt=$pdo->query($sql);
    //PDOStatement对象的方法:rouCount():对于select操做返回的结果集中记录的条数,
    //对于INSERT、UPDATE、DELETE返回受影响的记录的条数
    echo $stmt->rowCount();
}catch(PDOException $e){
    echo $e->getMessage();
}

二、利用prepare() 和stmt来实现防止sql注入。此方法还有一大特色,一次编译,屡次执行,减小系统开销。数据库

代码:函数

<?php 
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
try{
    $pdo=new PDO('mysql:host=localhost;dbname=imooc','root','root');    
    $sql="select * from user where username=:username and password=:password";
    $stmt=$pdo->prepare($sql);
    $stmt->execute(array(":username"=>$username,":password"=>$password));
    echo $stmt->rowCount();
    
}catch(PDOException $e){
    echo $e->getMessage();
}
相关文章
相关标签/搜索