使用预准备语句时是否需要mysql_real_escape_string()?

2022-08-30 18:35:09

对于此查询,必须使用 ?mysql_real_escape_string

任何改进或查询是否正常?

$consulta = $_REQUEST["term"]."%";

($sql = $db->prepare('select location from location_job where location like ?'));

$sql->bind_param('s', $consulta);
$sql->execute();
$sql->bind_result($location);

$data = array();

while ($sql->fetch()) {
    $data[] = array('label' => $location);
}

在这种情况下,查询速度很重要。


答案 1

不可以,准备好的查询(如果使用得当)将确保数据无法更改 SQL 查询并提供安全的查询。您正在正确使用它们,但您可以只进行一点更改。由于您使用的是“?”占位符,因此通过 execute 方法传递参数会更容易。

$sql->execute([$consulta]);

如果您要将其输出到页面,请小心,SQL参数绑定并不意味着它可以安全地显示在HTML中,因此在输出时也要在其上运行。htmlspecialchars()


答案 2

推荐