它有点难以解释。我已经建立了可以正常工作的mysql函数,并且使用了mysql的折旧方法,我需要将此函数改为使用mysqli而不是mysql方法。 我目前有:PHP mysql_real_escape_string();什么是使用mysqli的正确方法?
$con = mysql_connect("host", "username", "pass");
mysql_select_db("db", $con);
$Username = mysql_real_escape_string($_POST['user']);
$Password = hash_hmac('sha512', $_POST['pass'], '&R4nD0m^');
$Query = mysql_query("SELECT COUNT(*) FROM users WHERE username = '{$Username}' AND password = '{$Password}'") or die(mysql_error());
$Query_Res = mysql_fetch_array($Query, MYSQL_NUM);
if($Query_Res[0] === '1')
{
//add session
header('Location: newpage.php');
}
else {
echo 'failed login';
}
现在我申请的mysqli这和它不返回任何数据或错误,但该功能将依然要求。
$log = new mysqli("host", "user", "pass");
$log->select_db("db");
$Username = $log->real_escape_string($_POST['user']);
$Password = hash_hmac('sha512', $_POST['pass'], '&R4nD0m^');
$qu = $log->query("SELECT COUNT(*) FROM users WHERE username = '{$Username}' AND password = '{$Password}'");
$res = $qu->fetch_array();
if($res[0] === '1'){
//add session
header('Location: newpage.php');
}
else {
$Error = 'Failed login';
sleep(0.5);
}
echo $res['username'].' hello';
}
但我不确定这是错误的原因。我知道这可能是一个简单的回答
PDO准备语句 –
@E_p这就是我一直在寻找这个词!谢谢 – sourRaspberri
请使用PDO学习使用参数化查询,而不是使用字符串转义。它可以帮助您避免随时逃脱字符串,因此您不会冒着忘记逃离字符串的风险。 http://bobby-tables.com/php.html显示了如何做到这一点的例子。 –