mysql pdo query_PDO query和execute的区别

PDO::query()用于执行SQL语句并返回结果集,而PDOStatement::execute()用于执行预处理语句,允许绑定参数以防止SQL注入。预处理语句能提升性能,特别是当语句需要多次执行不同参数时。记得在不使用结果集时关闭游标以释放资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值