在准备时,MySQLi查询能否与MySQL中的查询相同?

时间:2013-06-13 21:49:46

标签: php mysqli

在PHP的MySQL中,我曾经使用严重的重音和单引号格式化我的查询:

SELECT * FROM `Members` WHERE `Username`='JohnDoe'

然而,在MySQLi中,引入了准备好的语句,我看到的所有教程或纪录片都没有单引号和重音符号的格式查询。

使用旧的查询方式是否仍然安全?对于像下面这样的东西,它是否会对SQL注入的安全性产生影响?

$mysqli = new mysqli(...);
$st = $mysqli->prepare("SELECT * FROM `Members` WHERE `Username`='?'");

或者我应该在没有`s和s的情况下执行它?

1 个答案:

答案 0 :(得分:3)

使用预准备语句,您不会在参数占位符周围使用单引号。但是,您仍然可以使用数据库对象名称的反引号。除了那些数据库对象本身以需要反引号的方式命名的时候,这纯粹是你喜欢的。

我个人觉得最好一直使用反引号,因为我觉得它更容易一目了然地阅读查询。