$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(); |
1
2
3
4
5
6
7
|
$sth = $dbh ->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth ->execute( array (150, 'red' )); $red = $sth ->fetchAll(); $sth ->execute( array (175, 'yellow' )); $yellow = $sth ->fetchAll(); |
总结地址:http://www.cnblogs.com/pinocchioatbeijing/archive/2012/03/20/2407869.html
http://sjolzy.cn/PDO-query-results-achieved-in-many-ways.html
无论原来数据库里的数据是什么类型,通过这写遍历方法出来的数组,里面的成员都成了字符串 ? var_dump一下,发现全是string......
If you want to use PDO::FETCH_CLASS but don't like that all the values are of the type string, you can always use the __construct function of the class specified to convert them to a different type.
Another way is using mysqlnd, but it seems I had to recompile PHP for that.
<?php
class Cdr {
public $a; // int
public $b; // float
public $c; // string
public function __construct() {
$this->a = intval($this->a);
$this->b = floatval($this->b);
}
}
// ...
$arrCdrs = $objSqlStatement->fetchAll(PDO::FETCH_CLASS, 'Cdr');
?>
发现填上这句话后,fetchall得来的类型是正确的。
如果没有这句话,fetchall得来的都是字符串
PDO 指南
http://www.oschina.net/translate/php-pdo-how-to