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

相关文章
相关标签/搜索