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

how to acces super variable $_POST in 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

在 google 之后我找到了这个解决方案 filter_input(INPUT_POST, 'var_name') 而不是 $_POST['var_name']

但这是 PHP

有什么方法可以 PDO 如何替换 PDO 中的 $_POST$_GET

在变量中使用 $_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
        ));

filter_input(INPUT_POST, 'username') 而不是 $_POST['username'] 应该可以。

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,不能用它来解决问题。