tags:

views:

55

answers:

2

how to add multiple records in mysql using php. Is using array the only solution to this problem. Because I tried using array but the record that would be added in the database would look like this: array

+3  A: 

You need to go through each member of the array:

foreach($array as $record)
 {   ...  }

and perform an INSERT query for each member or - better for performance - insert all records in one statement as outlined in stereofrog's answer.

Pekka
It would be better to perform it all as one query instead of having to hit the DB for each iteration. No?
John Conde
True. @stereofrog's answer outlines how. I didn't know VALUES can do multiple rows at once!
Pekka
+4  A: 

You can use a multivalue insert statement (INSERT... VALUES (record1), (record2) etc) (see http://dev.mysql.com/doc/refman/5.1/en/insert.html)

This is how you can construct such a statement from array of records

$values = array();
foreach($records_array as $record)
    $values[] = sprintf("( '%s' , '%s' )", addslashes($record['name']), addslashes($record['email']));
$sql = "INSERT INTO users(name, email) VALUES " . implode(",", $values);
mysql_query($sql);
stereofrog
A good post but NOTE: use mysql_real_escape_string instead of addslashes!!!!!!! http://php.net/manual/en/function.mysql-real-escape-string.php
Dan
what does %s mean?
it stands for string replace of the params `addslashes($record['name'])` supplied
Pentium10