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();
}
相關文章
相關標籤/搜索