我正在关注用户注册的教程。这就是我试图使用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 /注入等
答案 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。