当使用准备好的语句时,MySQL_REARY_EXECUTE_String()是否

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (8)

对于此查询,必须使用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);
}

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

提问于
用户回答回答于

没有,准备好的查询(如果使用得当)将确保数据被正确转义以进行安全查询。你用得很好,只需要改变一件事。因为使用的是“?”占位符,所以最好通过EXECUTE方法传递Params。

$sql->execute(array($consulta));

如果将其输出到页面,则要小心,数据库清理并不意味着它在HTML中显示是安全的,所以也在上面运行htmlSpecialchars()。

扫码关注云+社区