PDO选择$ _POST

时间:2015-06-17 07:35:22

标签: php pdo

这很好用

$db = new PDO(<connection data>);
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(isset($_POST['username']) && isset($_POST['password'])){
        $username = "name";
        $pw = $db->prepare('SELECT * FROM table WHERE column1 = ?');
        $pw->execute(array($username));
        $result = $pw->fetchAll();
        var_dump($result);
    }

如果我在表单提交后使用$ _POST [&#39;用户名&#39;]我会得到var_dump($ result)的数组(0){};

$db = new PDO(<connection data>);
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(isset($_POST['username']) && isset($_POST['password'])){
        $username = $_POST['username'];
        //var_dump($username); --> string(7) " name"
        $pw = $db->prepare('SELECT * FROM table WHERE column1 = ?');
        $pw->execute(array($username));
        $result = $pw->fetchAll();
        var_dump($result);
    }

你知道我犯了哪些错误吗?

1 个答案:

答案 0 :(得分:1)

在第一个测试中,使用硬编码值,

$username = "name";

然后,当使用post值时,它变为

$username = $_POST['username']; // --> " name"

如你所见,还有一个额外的空间。如果不存在这样的空间,则可以尝试修剪该值,例如:

$username = trim($_POST['username']);

但是,如果在用户名中包含空格是错误的,那么您不应该#34;更正&#34;它本身,只是向用户报告错误(我认为这更像是一个UX方面,而不是编程方面)。