function Query()
{
$args = func_get_args ();
if (sizeof ($args) > 0)
{
$query = $args[0];
for ($i = 1; $i < sizeof ($args); $i++)
$query = preg_replace ("/\?/", "'" . mysql_real_escape_string ($args[$i]) . "'", $query, 1);
}
else
{
return FALSE;
}
我有一个这样的功能。基本上,我进行这样的查询:
$this->Query('SELECT * FROM USERS WHERE Username = ? AND Points < ?', $username, $points);
目前支持已弃用mysql
功能,但适应mysqli
就像更换一样简单mysql
with mysqli
在我的课堂上。
这是抵御 SQL 注入攻击的安全方法吗?每个问号都会被自动清理mysql_real_escape_string
我以前从未遇到过问题,但我应该使用mysqli_real_escape_string
用于消毒?
我知道 mysqli 的准备语句但使用bindParam
对我来说,每个变量似乎有点矫枉过正。
你怎么认为?
使用绑定参数是not矫枉过正,应该是必需的。它将更有效地转义和准备您的参数。
$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* execute prepared statement */
mysqli_stmt_execute($stmt);
是这样吗really看起来有点矫枉过正?
文档 http://php.net/manual/en/mysqli-stmt.bind-param.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)