我一定要使用mysql_real_escape_string如果我绑定的参数?
-
21-09-2019 - |
题
我有以下代码:
function dbPublish($status)
{
global $dbcon, $dbtable;
if(isset($_GET['itemId']))
{
$sqlQuery = 'UPDATE ' . $dbtable . ' SET active = ? WHERE id = ?';
$stmt = $dbcon->prepare($sqlQuery);
$stmt->bind_param('ii', $status, $_GET['itemId']);
$stmt->execute();
$stmt->close();
}
}
我需要在这种情况下mysql_real_escape_string还是我好吗?
解决方案
没有,你没有自己逃跑值的(即没有不需要调用mysqli_real_escape_string
)的,当你使用预处理语句:数据库引擎将做到这一点本身<。 / p>
(其实,如果你分别致电mysql_real_escape_string
和使用绑定参数,你的字符串会得到转义两次 - 这将不会是很大的:你想最终逃脱字符随处可见......)的
,点击
作为一个旁注:你的价值观传递为整数的(由'ii'
所示)的,所以你就不必打电话mysql_real_escape_string
,即使你不使用准备好的语句:正如其名称所示,这函数用于逃脱字符串。
对于整数,我一般只使用 intval
,以确保我注入数据到我的SQL查询,确实是整数
(但是,你正在使用准备好的查询,再次,你不必做这种逃避自己的)的
其他提示
没有,你肯定是没有。两者结合会导致 在可见转义字符显示在你的数据。
function dbPublish($status)
{
global $dbcon, $dbtable;
if(isset($_GET['itemId']))
{
$sqlQuery = 'UPDATE ' . $dbtable . ' SET active = ? WHERE id = ?';
$stmt = $dbcon->prepare($sqlQuery);
$stmt->bind_param('ii', $status, $_GET['itemId']);
$stmt->execute();
$stmt->close();
}
}
不隶属于 StackOverflow