2013-06-03 2 views
0

У меня есть массив имен. Моя структура таблицы:Вставить запрос - цикл через массив данных?

id | name 

Что бы быть лучшим способом, чтобы вставить имя каждого из массива и отдельной строки в таблице?

id | name 
1 | John 
2 | James 

Я думал о переходе через массив в PHP bu, должен быть лучший способ?

+0

Это было бы идеальным местом, чтобы использовать подготовленное заявление и связанные параметры. – andrewsi

+0

определить «лучший». Вы испытываете какие-либо проблемы с вашим текущим подходом на данный момент? –

+1

закодируйте массив, чтобы создать один многозначный 'INSERT' statetment, например,' INSERT INTO tableName VALUES (1, 'John'), (2, 'James') ' –

ответ

0

Небольшое улучшение @Daryl Гилл для prepare лучше практики

// List of names to insert 
$names = array("Daryl", "AnotherName"); 

// Prepare once 
$sh = $db->prepare("INSERT INTO tblname (Name) VALUES (?)"); 

foreach ($names AS $name){ 
    $sh->bind_param('s', $name); 
    $sh->execute(); 
} 

// Free resource when we're done 
$sh->close(); 
+0

Я не получаю бит 's'. – beans

+0

Ну, я не фанат mysqli (большую часть времени я использую PDO). «S» означает, что первые параметры являются строковыми. См .: http://php.net/manual/en/mysqli-stmt.bind-param.php – invisal

3

Использование Mysqli Например:

$DB = new mysqli ("Server","username","password","database"); 

$Array = array("Daryl", "AnotherName"); 
foreach ($Array AS $Names){ 
    $Query = $DB->prepare("INSERT INTO Table (Name) VALUES (?)"); 
    $Query->bind_param('s',$Names); 
    $Query->execute(); 
    $Query->close(); 
} 

Лучший возможный способ будет заключаться в цикле через массив, используя Еогеасп, чтобы получить отдельные значения .. Затем выполнить вставку на текущем значении перед циклом к следующий.

Смежные вопросы