mySQLI - mysqli_real_escape_string的问题

时间:2011-03-22 01:40:44

标签: php mysql mysqli

我有这段代码,效果很好,但我想做一个简单的修改

    <?php session_start();
require 'includes/f_banco1.php';
require '../PasswordHash.php';


function checkBd($sql, $db, $user, $codePass) {
    $user = $_GET['userid']; //here
    $codePass = $_GET['code'];//here

    if(is_numeric($user)) {

        ($sql = $db->prepare("select userid, code from password_reset where userid=? and code=?"));

        $sql->bind_param('ss', $user, $codePass);

        $sql->execute();

        $sql->bind_result($user, $codePass);

        if ($sql->fetch()) {
            $_SESSION['u_name']= sha1($user);
            header("location: updatePass.php");
            return true;
        }
        else
        echo "Não existe na BD";
        return false;

    }
    else
    echo "Erro";

}

checkBd ($sql, $db, $user, $codePass);

?>

我想更改这些行

$user = $_GET['userid']; //here
$codePass = $_GET['code'];//here

    $user = mysqli_real_escape_string($db, $_GET['userid']);
$codePass = mysqli_real_escape_string($db, $_GET['code']);

但是通过这种改变,代码简单停止工作,$ user的回显不显示任何内容

任何想法?

感谢

2 个答案:

答案 0 :(得分:1)

你不需要这样做。您正在使用预准备语句,它们会自动转义变量。

答案 1 :(得分:0)

如果您准备语句,则无需转义字符串。

注意:必须打开数据库连接才能使用mysqli_real_escape_string()