Sind die Kosten für die Verwendung von Prepare und Query für dieselbe SQL-Abfrageanweisung gleich?
$sql = $pdo -> Prepare("select * from table");
$sql ->execute();
$rs = $sql ->
$rs = $go -> fetch(PDO :: FETCH_ASSOC);
Sind die oben genannten Vorbereitungs- und Abfrageabfragen gleichermaßen effizient? (SQL-Anweisungsinjektion ignorieren).
Single Welches ist besser für Abfrageergebnisse zu verwenden? Wird die Datenbank bei der Abfrage mindestens zweimal an die Datenbank gesendet?
1.PDO::query执行一条SQL语句,如果通过,则返回一个PDOStatement对象。PDO::query函数有个“非常好处”,就是可以直接遍历这个返回的记录集。
2.PDO::exec执行一条SQL语句,并返回受影响的行数。此函数不会返回结果集合。官方建议:
对于在程序中只需要发出一次的 SELECT 语句,可以考虑使用 PDO::query()。
对于需要发出多次的语句,可用 PDO::prepare() 来准备一个 PDOStatement 对象并用 PDOStatement::execute() 发出语句。
PDO::exec支持SELECT/DELETE/UPDATE/INSERT等全部SQL语句执行,所以相比PDO query()函数功能要强大的多。由于只返回受影响的函数,所以,如果执行SELECT则无法得到PDOStatement对象,故也无法遍历结果集,只能按照官方建议去使用query或execute函数。。
3.prepare的原理是这样的,预先把sql语句发送给sql server进行编译,等exec的时候再真正的执行。一次编译,多次执行。如果只是一次查询的话,prepare和query效率基本相当。如果多次执行,prepare的效率就会提现出来。另外并不是所有sql注入都可以防止,where in(“ ”)这样的就不行。