2013-02-21 1 views
0

У меня есть следующая строка:форматной строки с использованием PHP для вставки в БД MySQL

$result = "category,date,product,cost 
car,10/10/2005,toyota,3000 
bike,12/12/2007,yamaha,1000"; 

Мне нужно организовать строку в лучший формат для вставки в базу данных (необходимо, чтобы быть эффективными, как там может быть много данных также первая строка не понадобится).

Строка с новой строки, так что я могу:

$n = explode("\n", $result); 

, который ставит его в этом формате:

[0] => category,date,product,cost 
[1] => car,10/10/2005,toyota,3000 
[2] => bike,12/12/2007,yamaha,1000 

теперь, как бы я идти о форматировании для вставки в БД, еще раз решение должно быть эффективным (для производительности), также я бы хотел, чтобы первая строка не была вставлена ​​и, наконец, вставить, я хочу, чтобы дата не была вставлена.

Надеюсь, что это имеет смысл, спасибо за помощь заранее.

-------- редактировать ---------------

В таблице (пункт) структурирована со следующими полями:

category, product, cost 

благодаря

+1

RTLM: http://php.net/manual/en/function.str-getcsv.php –

+0

Мы не знаем вашу структуру db, поэтому не знаем, как отформатировать что-либо – 2013-02-21 19:33:32

+0

извинения, добавлена ​​структура таблицы. – Dino

ответ

0

Если вы собираетесь иметь подобную строку с теми же столбцами каждый раз, то вы могли бы сделать что-то вроде этого:

$n = explode("\n", $result); 

// skip the first row since it's just column names 
for ($i = 1; $i <= count($n); $i++) 
{ 
    $cat = $n[$i][[0]; // category 
    $date = $n[$i][[1]; // date 
    $prod = $n[$i][[2]; // product 
    $cost = $n[$i][[3]; // cost 

    // and you can put it into a query like so 
    $sql = "insert into myTable ('category', 'date', 'product', 'cost') values ('$cat', '$date', '$prod', '$cost')"; 
} 

D это ответ на ваш вопрос?

+1

str_getcsv(), как было сказано ранее, было бы лучшей идеей – 2013-02-21 19:40:30

+0

Возможно, поэтому я просто пытался предложить простое решение. – user1477388

+1

nice [sql injection holes] (http://bobby-tables.com) ... –

0

Улучшение от ранее ответил сообщение:

$n = explode("\n", $result); 

// skip the first row since it's just column names 

$sql = "insert into myTable ('category', 'date', 'product', 'cost') values "; 

for ($i = 1; $i <= count($n); $i++) 
{ 
    $cat = $n[$i][[0]; // category 
    $date = $n[$i][[1]; // date 
    $prod = $n[$i][[2]; // product 
    $cost = $n[$i][[3]; // cost 

    $sql .= "('$cat', '$date', '$prod', '$cost'),"; 
} 

$sql = trim($sql, ","); 

if(count($n) != 0) 
    mysql_qiery($sql) 

Это дает вам только один единственный запрос, который будет вставлять несколько строк.

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

  • Нет связанных вопросов^_^