它有點難以解釋。我已經建立了可以正常工作的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顯示瞭如何做到這一點的例子。 –