准备好的陈述 - 是否必要

3 php mysqli

准备好的语句添加了大量代码......但我一直听到提及使用它们......从1行代码到6左右增加了什么值?这只是为了防止sql注入吗?

类似的帖子在这里.

php.net在这里准备好的声明

Mic*_*ski 7

准备好的语句提供了针对SQL注入的出色保护.

除了SQL注入保护之外,预处理语句还可以在多次执行相同查询时(例如在INSERT循环中)减少数据库服务器上的负载.该语句仅由RDBMS编译一次,而不是每次都像在mysql_query()调用中那样进行编译.

不同的API需要不同数量的代码来执行预准备语句.我发现PDO可能比MySQLi稍微冗长,例如,如果你的情况允许在execute()调用中使用隐式参数绑定.这只有作用,如果你的所有参数都可以被评估为字符串.

// PDO implicit binding example:
// Not many lines of code if the situation allows for it
$stmt = $pdo->prepare("SELECT * FROM tbl WHERE col1=? AND col2=? AND col3=?");
$stmt->execute(array($val1, $val2, $val3));
Run Code Online (Sandbox Code Playgroud)