0

以下の PHP コードを使用して、SQL Server のデータベース テーブルに一括挿入します。ShopifyItem私はすでに(25列の)というテーブルを持っていますが、このコードを使用すると

未定義のオフセット: 24

エラーメッセージとItemテーブルには、csvファイルの行が1,000を超えていても(26行が適切に挿入されている)しか表示されません。

誰が何が悪いのか教えてもらえますか?

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));
}

} 
4

1 に答える 1

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を投稿できると便利です。

于 2013-01-14T12:10:44.310 に答える