PHP中關於PDO的使用

執行沒有結果集的查詢

執行INSERT,UPDATE,DELETE的時候,不返回結果集。這個時候能夠是有exec(),exec()將返回查詢所影響的行數php

int PDO::exec ( string $statement )
//PDO::exec — 執行一條 SQL 語句,並返回受影響的行數

eg:sql

<?php
$dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');

/*  刪除 FRUIT 數據表中知足條件的全部行 */
$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");

/* 返回被刪除的行數 */
print("Deleted $count rows.\n");
?>

一次執行一個查詢

當執行返回結果集或者影響行數可有可無的時候,應當使用query()fetch

public PDOStatement PDO::query ( string $statement )

eg:ui

<?php
function getFruit($conn) {
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach ($conn->query($sql) as $row) {
        print $row['name'] . "\t";
        print $row['color'] . "\t";
        print $row['calories'] . "\n";
    }
}
?>

屢次執行一個查詢

使用while和query()進行組合何嘗不可的,可是使用prepare()的效率會更高一點,prepare()一般與execute()一塊兒使用code

public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )

eg:get

<?php
/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>

關於結果的獲取

執行查詢結束以後,關於結果的獲取,又是一個不得不考慮的問題。
一般使用fetch(),fetchAll()和fetchColumn()
常見示例string

while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{   
    /*do something*/
 }
//或者
$rows = $stmt->fetchAll();
foreach($rows as $row)
{
    /*do something*/
}

思考

在實際使用過程當中,爲了防止sql注入,一般在sql語句中須要使用額外參數的時候,一般都使用prepare()
關於參數綁定,使用bindParam()或者使用execute()進行綁定it

相關文章
相關標籤/搜索