2013-01-04 2 views
0

Я использую приведенный ниже код PHP, чтобы сделать массивную вставку в таблицу базы данных на SQL Server. Я уже таблица называется ShopifyItem (с 25 столбцов), но когда я использую этот код, который я получилВставка csv-файла в таблицу базы данных SQL Server

Undefined смещение: 24

сообщение об ошибке и в Item таблице я вижу только (26 строка (ы) вставлена ​​правильно), даже файл csv имеет более 1000 строк.

Может ли кто-нибудь сказать мне, что случилось?

PHP код:

$server = "**\**,1433"; 
$connectionInfo = array("Database"=>"**", "UID"=>"**", "PWD"=>"**"); 
$conn = sqlsrv_connect($server, $connectionInfo); 
if($conn === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 
$file_handle = fopen("Table.csv", "r"); 

while (!feof($file_handle)) { 

$line_of_text = fgetcsv($file_handle, 1024); 

$tsql = "INSERT INTO Item (Handle, Title, [Body(HTML)], Vendor, [Type], Tags, [Option1 Name],[Option1 Value], [Option2 Name], [Option2 Value], [Option3 Name], [Option3 Value], [Variant SKU], [Variant Grams], [Variant Inventory Tracker],[Variant Inventory Qty], [Variant Inventory Policy], [Variant Fulfillment Service], [Variant Price], [Variant Compare At Price], [Variant Requires Shipping], [Variant Taxable], [Image Src], HQID, WebPrice) 
     VALUES ('$line_of_text[0]','$line_of_text[1]', '$line_of_text[2]', '$line_of_text[3]', '$line_of_text[4]', '$line_of_text[5]', '$line_of_text[6]', '$line_of_text[7]', '$line_of_text[8]', '$line_of_text[9]', '$line_of_text[10]', '$line_of_text[11]', '$line_of_text[12]', '$line_of_text[13]', '$line_of_text[14]', '$line_of_text[15]', '$line_of_text[16]', '$line_of_text[17]', '$line_of_text[18]', '$line_of_text[19]', '$line_of_text[20]', '$line_of_text[21]', '$line_of_text[22]', '$line_of_text[23]', '$line_of_text[24]')"; 

if(sqlsrv_query($conn, $tsql)) 
{ 
     echo "Statement executed.\n"; 
} 
else 
{ 
     echo "Error in statement execution.\n"; 
     die(print_r(sqlsrv_errors(), true)); 
} 

} 
+1

Я получу право работать над ответом для этого, чтобы у меня было 12% шанса получить кредит за мой ответ. –

+0

Вы правы, мои извинения. – Max

+0

Я не делаю PHP, поэтому я не уверен, что вы здесь делаете, но, возможно, проблема с данными в вашем CSV-файле. И что случилось с «26 строк (-ов) вставлены правильно»? Разве это не так? –

ответ

0

Если нет проблем с файлом CSV, вероятный кандидат эта линия:

$line_of_text = fgetcsv($file_handle, 1024); 

Вы ограничиваете данные для чтения для каждой строки до 1024 байт , Если строка длиннее этой, она будет усечена и, возможно, даст вам эту ошибку отсутствующих элементов. Вы можете изменить размер буфера, как это, если вы знаете, максимальная длина линии:

$line_of_text = fgetcsv($file_handle, 2048); 

или даже попробовать это так, чтобы увидеть, если это является причиной вашей проблемы:

$line_of_text = fgetcsv($file_handle); 

Это будет работать немного медленнее, но не ограничивает вашу длину линии.

Если это не сработает, тогда было бы полезно, если бы вы могли опубликовать строки данных csv 20-30.

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