1

在 PHP 的 MySQL 中,我曾经像这样格式化我的查询,带有重音和单引号:

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

但是,在 MySQLi 中,引入了准备好的语句,并且我看到的所有教程或文档的格式查询都没有单引号和重音符号。

使用我的旧查询方式仍然安全吗?它对以下内容的 SQL 注入安全性有影响吗?

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

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

4

1 回答 1

3

使用准备好的语句,您不要在参数占位符周围使用单引号。但是,您仍然可以在数据库对象名称周围使用反引号。在数据库对象本身以需要反引号的方式命名的那些时间之外,这纯粹是您的偏好。

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

于 2013-06-13T21:53:29.993 回答