[英]use mysqli_real_escape_string with prepared statement
我正在使用 mysqli 開發一個 PHP 項目,需要通過$_POST
從用戶那里檢索信息,我的問題是我想像這樣使用准備好的語句和mysqli->real_escape_string
:
//$mysqli is the link to my database
if( isset($_POST['ID_name']) && isset($_POST['Nombre_name']) )
{
//just in case magic_quotes_gpc is on
$id = trim(htmlentities(mysqli_real_escape_string(stripslashes($mysqli,$_POST['ID_name']))));
$nombre = trim(htmlentities(mysqli_real_escape_string(stripslashes($mysqli,$_POST['Nombre_name'])));
//... more code validation but not reffered to my question...
$query="insert into empleado_php values(?,?)";
if(!($consulta=$mysqli->stmt_init())){
echo"Error al crear la sentencia ingresar.php";
exit();
}
if(!($consulta->prepare($query))){
echo"Error al prepara la consulta ingresar.php";
exit();
}
if(!($consulta->bind_param("ss", $id, $nombre))){
echo"Error anexando parametros ingresar.php";
exit();
}
if(!($consulta->execute())){
echo "Error al ejecutar la consulta";
echo"<br>";
echo "Error ".$consulta->error. "con codigo " .$consulta->errno;
exit();
}
else{
echo "Datos ingresados exitosamente !!!";
}
$consulta->close();
$mysqli->close();
?>
我的問題是:使用准備好的語句時是否需要使用mysqli_real_scape_string
? 如果是,我的代碼很好嗎? 你能給一個更好的樣本嗎?
來自http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
轉義和 SQL 注入綁定變量與查詢分開發送到服務器,因此不會干擾它。 在解析語句模板之后,服務器在執行點直接使用這些值。 綁定參數不需要轉義,因為它們永遠不會直接替換到查詢字符串中。 必須向服務器提供綁定變量類型的提示,以創建適當的轉換。 有關更多信息,請參閱 mysqli_stmt_bind_param() 函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.