2009-06-12 4 views
0

Я вставляю данные из файла с 18 столбцами, таблица, в которую я хотел бы вставить его, содержит 20 столбцов. 2 из этих столбцов уже содержат данные. Как мне вставить файл в таблицу без перезаписи существующих данных.mysql, заменяющий столбцы в таблице

приведен пример кода. примечание $line .= ',,' добавляет два столбца, потому что обновление не будет работать, если столбцы не совпадают с точным размером таблицы в 20 столбцов. Но $line .= ',,' перезаписывает уже вставленные данные. Что я делаю?

$fcontents = file('data.txt'); 

if(mysql_error()) 
    echo mysql_error(); 

for($i=0; $i<sizeof($fcontents); $i++) 
{ 
    //strip out double quotes 
    $line = ereg_replace('"','',trim($fcontents[$i])); 

    $line .= ',,'; 

    //strip replace semi-colon with blank spaces 
    $line = ereg_replace(';',' ',$line); 

    //single quote in parts records breaks replace code, removing single quote... 
    $line = ereg_replace("'",'',$line); 


    //breaks apart the tab delimited row into a array 
    $arr = explode(",", $line); 

    //add comma deliminted data back 
    mysql_query("REPLACE INTO products VALUES ('". implode("','", $arr) ."')"); 


} 

ответ

4

Укажите имена столбцов:

REPLACE INTO products (col1, col2, ...) VALUES (val1, val2, ...) 

См MySQL online manual.

+0

Как указать имена столбцов в implode? – payling

+0

Они идут между «продуктами» и «ЦЕННОСТЯМИ», нет необходимости модифицировать implode! – Andomar

+0

после ввода имен столбцов и удаления строки. = ',,' У меня все еще есть проблемы с заменой значений. Вы уверены, что мне не нужно ничего делать с помощью взрыва? mysql_query ("REPLACE INTO products (col1, col2, col3) VALUES (" ". Implode (" ',' ", $ arr)." ') "); это то, что я изменил. – payling