如何在PDO中访问超级变量$ _POST

时间:2015-04-24 12:57:17

标签: php pdo

在我的PDO语句中,我使用以下方法将数据插入SQL:

//insert into database with a prepared statement
            $stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
            $stmt->execute(array(
                ':username' => $_POST['username'],
                ':password' => $hashedpassword,
                ':email' => $_POST['email'],
                ':active' => $activasion
            ));

我的问题是我收到一条警告信息Dont Access superglobal variable $_post directly

谷歌之后我发现了这个解决方案filter_input(INPUT_POST, 'var_name')而不是$_POST['var_name']

但这适用于PHP

PDO是否有任何方法可以替换$_POST中的$_GETPDO

3 个答案:

答案 0 :(得分:1)

PDO不是另一种语言。它是一个用于连接和操作数据源的PHP扩展。

您可以在代码中使用filter_input(INPUT_POST, 'username')而不会出现问题。

        $stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
        $stmt->execute(array(
            ':username' => filter_input(INPUT_POST, 'username'),
            ':password' => $hashedpassword,
            ':email' => filter_input(INPUT_POST, 'email'),
            ':active' => $activasion
        ));

这应该可以正常使用,但我不明白为什么你不能直接访问$_POST,可以解决它的问题。

答案 1 :(得分:0)

filter_input(INPUT_POST, 'username')代替$_POST['username']应该有用。

答案 2 :(得分:-1)

在变量

中使用$ _POST值
$stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
$username = $_POST['username'];
$email = $_POST['email'];
        $stmt->execute(array(
            ':username' => $username,
            ':password' => $hashedpassword,
            ':email' => $email, 
            ':active' => $activasion
        ));