$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