php - Overhead von Prepare vs. SQL?
我想大声告诉你
我想大声告诉你 2017-06-05 11:07:31
0
1
762

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

$sql = $pdo -> query("select * from table");

$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?

Ist die Zubereitung von PDO nur für Auserwählte geeignet? Was ist mit den anderen beiden Vorgängen „Aktualisieren“ und „Einfügen in“? Die Verwendung von Platzhaltern in der Vorbereitung kann die Injektion effektiv verhindern, aber wann? ="abc./-+#$%`123" Bei diesen Sonderzeichen (sofern sie nicht maskiert sind) wird beim Ausführen der Anweisung ein Fehler gemeldet. Ist exec besser zum Aktualisieren und Einfügen geeignet?

我想大声告诉你
我想大声告诉你

Antworte allen(1)
阿神

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(“ ”)这样的就不行。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage