我知道标准查询会运行一条SQL语句,该语句要求为了安全起见而转义所有数据,例如防止SQL注入。
Prepared语句将参数绑定到不需要转义数据的位置,是多次执行查询的理想选择。
但是我想知道在安全性和安全性上,这三个查询示例之间有什么区别。
我知道带有绑定参数的第一个查询( $ query )是最安全,最理想的使用方式,但其他两个查询示例( $ query2 和< strong> $ query3 )在使用CodeIgniter框架时也安全吗?
如果我们仅使用php,由于数据变量用引号引起来,因此 $ query3 是安全的吗?
查询1
$query = "SELECT * FROM users WHERE id = ?";
$bind = array($id);
$query = $this->db->query($query, $bind);
查询2
$query2 = "SELECT * FROM users WHERE id = '" . $this->db->escape_str($id) . "'";
查询3
$query3 = "SELECT * FROM users WHERE id = '" . $id . "' ";