使用数组内爆来构建插入查询

时间:2015-09-18 19:13:36

标签: php mysql

我正在关注用户注册的教程。这就是我试图使用implode构建查询:

if(isset($_POST['submit'])){
                $registration_data= array(
                    'username'      =>   $_POST['username'], 
                    'password'      =>   $_POST['password'], 
                    'password_again' =>   $_POST['password_again'], 
                    'first_name'    =>   $_POST['first_name'], 
                    'last_name'     =>   $_POST['last_name'],
                    'email'         =>   $_POST['email']
                );     

                register_user($registration_data);

        }

function register_user($registration_data){
        global $connect; 
        $data=implode(',', $registration_data).'}';
        $fields= implode(",", array_keys($registration_data));

现在我必须像这样构建查询

$query=INSERT INTO users ($fields) VALUES($data);

//  I want data to be formated like this '{$username}', '{$password}', 

我怎样才能在上面提到的内爆函数

中完成

注意:我只是关注一些基础教程,所以不要担心PDO /注入等

1 个答案:

答案 0 :(得分:2)

特别是如果你刚刚学习如何做到这一点,你应该学会从一开始就做到这一点。

您确实不需要在准备好的语句中使用implode()。只需使用PDO::prepare()并将数组传递给PDOStatement::execute即可。伪代码如下:

$registration_data= array(
    ':username'      =>   $_POST['username'], 
    ':password'      =>   $_POST['password'], 
    ':password_agai' =>   $_POST['password_again'], 
    ':first_name'    =>   $_POST['first_name'], 
    ':last_name'     =>   $_POST['last_name'],
    ':email'         =>   $_POST['email']
);     

$sql='INSERT INTO yourtable VALUES (:username, :password, :password_agai, :first_name, :last_name, :email);';
$qry=$yourpdoconn->prepare($sql);
$qry->execute($registration_data);

请注意,你仍然需要处理你的错误和其他一切,但这是它的要点。 mysqli_*可以使用预先准备好的语句执行相同的操作,因此您也不一定会遇到PDO。