0

我正在使用 AJAX 将用户的输入发送到 PHP 脚本。PHP 脚本显示来自 MySQL 表的记录。

如果用户输入通配符 ( %),则会列出数据库中的所有记录。

从编码的角度来看,这可以吗?应该%允许char吗?或者我的代码可能是错误的?

我真的不在乎用户体验,实际上这可能是一个很好的功能,但我想知道这是否是准备好的语句的正常行为


...
$stmt = $dbh->prepare("SELECT * FROM tblStudent where lastNameStudent LIKE ?");
$stmt->bindParam(1, $lastname, PDO::PARAM_STR);
$stmt->execute();
...

当我设置时,$lastname='%'我得到了tblStudent表中的所有记录。

4

1 回答 1

3

从代码的角度来看这很好吗?

是的。

应该允许 % char 吗?

它没有错。至少从安全的角度来看。

说到应用程序逻辑 - 这取决于。如果您希望按字面意思搜索此字符,则可以转义该字符,如果您想将其用作通配符,则不转义。

此行为与准备好的语句无关。
准备好的语句只是将变量放入查询的一种方式。这个变量的内容与其无关。

于 2013-07-25T18:07:10.917 回答