【发布时间】:2021-03-16 03:36:21
【问题描述】:
如何将这个 mysqli 语句重写为准备好的语句?我尝试将下面提供的代码转换为准备好的语句。但是,只有第一行值被插入而不是其余的。我正在尝试将动态文本字段集成到我的表单中。因此,用户可以轻松添加或删除输入字段。
原代码: action.php
<?php
include_once('config.php');
$userData = count($_POST["name"]);
if ($userData > 0) {
for ($i=0; $i < $userData; $i++) {
if (trim($_POST['name'] != '') && trim($_POST['email'] != '')) {
$name = $_POST["name"][$i];
$email = $_POST["email"][$i];
$query = "INSERT INTO users (name,email) VALUES ('$name','$email')";
$result = mysqli_query($mysqli, $query);
}
}
echo "Data inserted successfully";
}else{
echo "Please Enter user name";
}
?>
我的尝试:
<?php
include_once('config.php');
$name = $email = "";
$name_err = $email_err = "";
$userData = count($_POST["name"]);
if ($userData > 0) {
for ($i=0; $i < $userData; $i++) {
if (trim($_POST['name'] != '') && trim($_POST['email'] != '')) {
//Validate Name
$input_name = trim($_POST["name"][$i]);
if(empty($input_name)){
$name_err = "Please enter a name.";
} elseif(!filter_var($input_name, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
$name_err = "Please enter a valid name.";
} else{
$name = $input_name;
}
// Validate Email
$input_email = trim($_POST["email"][$i]);
if(empty($input_email)){
$email_err = "Please enter the email.";
}else{
$email = $input_email;
}
$query = "INSERT INTO users (name,email) VALUES (?,?)";
if($stmt = $mysqli->prepare($query)){
// Bind variables to the prepared statement as parameters
$stmt->bind_param("ss", $param_name,$param_email);
// Set parameters
$param_name = $name;
$param_email = $email;
// Attempt to execute the prepared statement
if($stmt->execute()){
// Records created successfully. Redirect to landing page
header("location: dynamic.php");
exit();
} else{
echo "Something went wrong. Please try again later.";
}
}
// Close statement
$stmt->close();
}
// Close connection
$mysqli->close();
}
}
?>
【问题讨论】: