0

Here's a fairly basic PHP PDO snippet that accesses a MySQL table named "Users" and inserts rows of data to it using a prepared statement and multiple bindings:

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO Users (firstname, lastname, email) 
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);

// insert a row
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

// insert another row
$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();
....

As can be seen, this involves an indefinite number of queries since every row-insert takes an execute() of its own. I am attempting to reduce the number of queries and my goal is to have a single loop create a single INSERT query for all the records being inserted. Is it possible? Without prepared statement it's very easy and I can make it work but I am lost with prepared.

TheLearner
  • 2,335
  • 2
  • 29
  • 69

1 Answers1

0

It's enough to concatenate strings with coma (,) to act as one parameter.

$stmt->bindParam(':firstname', $firstname[0] . ',' . $firstname[1]);