How do I rewrite this mysqli statement into a prepared statement? I tried converting the code provided below into the prepared statement. But, only the first row of values get inserted not the rest. I am trying to integrate dynamic text fields into my form. So, user can easily add or remove input fields.
Original code: 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";
}
?>
my try:
<?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();
}
}
?>