使用pgo将数据插入mysql

时间:2015-08-21 00:08:15

标签: php pdo

我将数据插入我的数据库。插入了数据,但我想在插入数据后得到的结果还可以,但是我得到了其他的"注册未完成"。

请帮忙吗?

这是我的代码

<?php

require 'functions.php';
require 'lib/password.php';

if(isset($_POST['username']) && isset($_POST['password'])){
    $username = $_POST['username'];
    $password = $_POST['password'];



    if(!empty($username) && !empty($password)){
        $hash = password_hash($password, PASSWORD_BCRYPT);
        $query = "INSERT INTO users (id, username, password) VALUES ('','".$username."','".$hash."')";
        if($conn->query($query)===TRUE){
            echo 'Ok';
        } else{
            echo 'Registration not complete';
        }
    }
}

?>

<form action="register.php" method="POST">
    Username: <input type="text" name="username"><br>
    Password: <input type="password" name="password"><br>
    <input type="submit" value="Register">
</form>

1 个答案:

答案 0 :(得分:1)

pdo::query()成功后不会返回true。它返回一个PDOStatement对象。检查你的条件陈述,你会看到它失败的原因:

if($conn->query($query)===TRUE)

您的查询受SQL注入的影响。这是你何时应该使用pdo::prepare()和PDOStatement :: execute()(又名预备语句)的一个很好的例子。您不应直接在查询中使用用户输入(POST),在本例中为$username