Php 使用数组内爆生成插入查询
我遵循用户注册教程。这就是我试图使用内爆构建查询的内容:Php 使用数组内爆生成插入查询,php,mysql,Php,Mysql,我遵循用户注册教程。这就是我试图使用内爆构建查询的内容: if(isset($_POST['submit'])){ $registration_data= array( 'username' => $_POST['username'], 'password' => $_POST['password'],
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/注入等问题。在对所有数据值进行内爆之前,您需要在其周围加上引号:
$data = implode(',', array_map(function($x) {
return "'" . $x . "'";
}, $registration_data));
$fields = implode(',', array_keys($registration_data));
$query = "INSERT INTO users ($fields) VALUES ($data)";
特别是如果你只是在学习如何做到这一点,你应该从一开始就学会正确地去做 您真的不需要对准备好的语句使用
infrade()
。只需使用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 那么这个匿名函数将接收数组?我应该也添加这些{}吗?SQL不使用
{}
,所以我不知道您为什么要添加它。请阅读数组映射
的文档。为数组的每个元素调用匿名函数,并返回一个包含结果的数组。