請我能得到一些幫助重寫下面的代碼,使用預處理語句(mysqli的),這是新的給我,並試圖去抓住它:PHP,幫助重寫代碼使用預準備語句
$sql = sprintf("SELECT `user`.`firstname`, `user`.`lastname` from `user` where `user`.email='%s' and `user`.password='%s'",
mysql_escape($_POST['username']),
mysql_escape($_POST['password'])
);
$name = mysql_query($sql);
if(mysql_num_rows($name)==1){
$_SESSION['name'] = mysql_fetch_assoc($name);
header("Location: /in.php");
exit();
}else{
echo "here";
}
-------------------------更新-----------------
mysql_escape以下功能:
function mysql_escape($data){return(mysql_real_escape_string((get_magic_quotes_gpc())?stripslashes($data):$data));}
------------------- UPDATE2 --------------------- -----
我可以寫SELECT語句:
$stmt = $db->prepare("SELECT `user`.`firstname`, `user`.`lastname` from `user` where `user`.email=? and `user`.password=?");
$stmt->bind_param("ss", $_POST['username'], $_POST['password']);
$stmt->execute();
$stmt->close();
,但我與這部分掙扎:
$name = mysql_query($sql);
if(mysql_num_rows($name)==1){
$_SESSION['name'] = mysql_fetch_assoc($name);
header("Location: /in.php");
exit();
}else{
echo "here";
}
這個頁面有使用一個很好的例子帶準備好的語句的mysqli:http://php.net/manual/en/mysqli.prepare.php。作爲一個方面說明,我相信'mysql_escape'從PHP 5.3.0開始已棄用,您應該使用'mysql_real_escape_string' – RageD
而不是要求爲您完成工作 - 嘗試自己動手並提出一些具體問題 – zerkms