我应该一直绑定变量吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该一直绑定变量吗?相关的知识,希望对你有一定的参考价值。
当用户Login
到网站
users
[id - name]
[1 - mark]
[2 - jean]
[3 - mary]
我使用以下查询从上表中拉出id
和name
:
$Query = "SELECT id FROM users WHERE ~";
然后我检查拉出的数据:
if (ctype_digit($row['id'])) {
$_SESSION['id'] = $row['id'];
//Pretened that i didn't use AUTO_INCREMENT in the Table.
} else {
logout();
}
现在,例如,我想使用$id = $_SESSION['id']
从数据库中提取名称
我应该绑$id
$Query = "SELECT name FROM users WHERE id = :id";
//...execute(['id' => $id])
或者直接添加$id
$Query = "SELECT name FROM users WHERE id = $id";
//...execute();
我应该只绑定来自Input
的$_POST/GET['value'];
s值
甚至$_SESSION['INT/STR'];
由php preg_replace()
ctype_digit/alnum()
功能检查和清理?
答案
性能差异可以忽略不计。在some tests,甚至看起来prepare()
和execute()
稍快。
在SQL中可能存在一些边缘情况,其中参数的使用可能使优化器对查询有错误的想法,并且它可能不会使用它应该的索引。但这些情况很少见。如果您遇到过它们,请与它们打交道。
可能存在以下情况:100%保证变量是安全的,并且代码可读性和维护更容易避免使用参数。
但表现不应该是原因。支持安全性而非性能。
如果你被黑了,你会希望你做到。
P.S。:我建议如果微优化性能对您来说非常重要,那么您应该使用Java或Go等语言,而不是像PHP这样的脚本语言。
以上是关于我应该一直绑定变量吗?的主要内容,如果未能解决你的问题,请参考以下文章