我根据用户选择在SQL查询的ORDER BY子句中使用不同的值。如何使用mysqli_real_escape_string()函数转义此选定值?
例如,网址如下:
localhost/person/person_listing.php?sort_by=date_of_birth
基于此,我正在使用:
if (isset($_GET['sort_by'])) {
$sort_by = trim($_GET['sort_by']);
if (!empty($sort_by)) {
$order_by_sql = " ORDER BY $sort_by";
}
}
问题是,逃避这种类型的SQL附加组件的最佳方法是什么?整个ORDER BY子句可以一次转义,还是每个值都必须单独转义?
答案 0 :(得分:0)
执行此操作的最佳方法是使用prepared statement。您的代码看起来如下:(grabbed from here。
基本上,只要有想要传递的变量,就可以添加问号。然后使用mysqli_stmt_bind_param
函数传递它。 ss
这意味着您要传递2个字符串。
if ($stmt = mysqli_prepare($link, "SELECT * FROM users WHERE Name=? ORDER BY ?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "ss", $name, $sort_by);
}