我正在使用AJAX将用户的输入发送到PHP脚本。 PHP脚本显示MySQL表中的记录。
如果用户输入通配符(%
),则会列出数据库中的所有记录。
从编码的角度看,这样可以吗?应该允许%
字符?或者我的代码可能错了吗?
我真的不关心用户体验,实际上这可能是一个很好的功能,但我想知道这是否是准备好的语句的正常行为。
...
$stmt = $dbh->prepare("SELECT * FROM tblStudent where lastNameStudent LIKE ?");
$stmt->bindParam(1, $lastname, PDO::PARAM_STR);
$stmt->execute();
...
当我设置$lastname='%'
时,我会获得tblStudent
表中的所有记录。
答案 0 :(得分:3)
从代码的角度来看,这样可以吗?
是
应该允许%char吗?
没有错。至少从安全的角度来看。
说到应用程序逻辑 - 它取决于。如果您想要按字面搜索它,可以转义此字符,如果您想将其用作通配符,则可以不转义。
此行为与准备好的陈述无关 准备好的语句只是将变量放入查询的一种方法。这个变量的内容与其无关。