1. PDO::query()
PDO::query()在一个单一函数调用中执行SQL语句,通过返回PDOStatement对象,返回结果集。
函数原型:
PDOStatement PDO::query ( string $statement )
PDOStatement PDO::query ( string $statement , int $PDO::FETCH_COLUMN , int $colno )
PDOStatement PDO::query ( string $statement , int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
PDOStatement PDO::query ( string $statement , int $PDO::FETCH_INTO , object $object )
query运行标准的SQL语句,要求你正确对所有数据进行编码避免SQL注入及其它安全问题。
2. PDOStatement::execute
PDOStatement::execute用于执行已经预处理过的语句。
函数原型:
bool PDOStatement::execute ([ array $input_parameters ] )
execute运行prepare预处理语句允许你绑定参数,不需要自己对参数进行编码。
还有一个是性能问题:
prepare会进行一次预处理,然后可以多次执行execute传递不同的参数,这样有助于性能的提升,例子:
$sth = $db->prepare("SELECT * FROM table WHERE foo = ?");
$sth->execute(array(1));
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$sth->execute(array(2));
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
注意:如果你不取所有数据的结果集,然后再发出下一次调用 PDO::query() ,您的调用可能会失败。
可以调用 PDOStatement::closeCursor()来释放数据库资源与PDOStatement对象,然后再发出下一次调用PDO::query()