簡體   English   中英

將 mysqli_real_escape_string 與准備好的語句一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM