在PHP的MySQL中,我曾经使用严重的重音和单引号格式化我的查询:
SELECT * FROM `Members` WHERE `Username`='JohnDoe'
然而,在MySQLi中,引入了准备好的语句,我看到的所有教程或纪录片都没有单引号和重音符号的格式查询。
使用旧的查询方式是否仍然安全?对于像下面这样的东西,它是否会对SQL注入的安全性产生影响?
$mysqli = new mysqli(...);
$st = $mysqli->prepare("SELECT * FROM `Members` WHERE `Username`='?'");
或者我应该在没有`s和s的情况下执行它?
答案 0 :(得分:3)
使用预准备语句,您不会在参数占位符周围使用单引号。但是,您仍然可以使用数据库对象名称的反引号。除了那些数据库对象本身以需要反引号的方式命名的时候,这纯粹是你喜欢的。
我个人觉得最好一直使用反引号,因为我觉得它更容易一目了然地阅读查询。