Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysqli and binding multiple value sets during insert [duplicate]

Tags:

php

mysql

mysqli

Hoping someone can give me some insight here.

When having to insert multiple rows into a table at once, I've used sql that looks something like this:

INSERT INTO some_names (firstName, lastName) VALUES ('Joe', 'Smith'),('Fred','Sampson'),('Lisa','Pearce')

As you can see I'm inserting three rows with one statement. The reason I do this is that I believe it is more efficient than executing three distinct statements to insert the rows.

So my question is this: how do I do this if I want to be able to bind my values to a statement? Unfortunately I've been looking all over the web and I can only find example of single statements in the form of:

$stmt = $mysqli->prepare("INSERT INTO some_names (firstName, lastName) VALUES (?, ?)");
$stmt->bind_param('ss', $firstName, $lastName);
$firstName = "Joe";
$lastName = "Smith";
$stmt->execute();
$firstName = "Fred";
$lastName = "Sampson";
$stmt->execute();

It seems that this would be the equivalent of doing separate INSERT statements and seems to be less efficient.

So my question is: Is there any way to bind in a multi-insert statement? Please educate me here! Thanks

like image 448
NEW2WEB Avatar asked Mar 16 '26 17:03

NEW2WEB


1 Answers

Simple:

$stmt = $mysqli->prepare("INSERT INTO some_names (firstName, lastName) VALUES (?, ?),(?,?),(?,?)")
$stmt->bind_param('ssssss', 'Joe', 'Smith','Fred','Sampson','Lisa','Pearce');
like image 171
Adidi Avatar answered Mar 19 '26 06:03

Adidi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!