-1

このスクリプトは正常に実行されますが、Excel ファイル (ヘッダー名) から最初の行を追加します。ループの最初の行を無視させたい - スクリプトを確認してください -

<?php

//connect to the database
$connect = mysql_connect("localhost","root","password");
mysql_select_db("mydatadb",$connect); //select the table
//

if ($_FILES[csv][size] > 0) {

    //get the csv file
    $file = $_FILES[csv][tmp_name];
    $handle = fopen($file,"r");
    //loop through the csv file and insert into database
    do {
        if ($data[0]) {
            mysql_query("INSERT INTO bulk_listings (name, description, owner_id, list_in, auction_type, start_time, start_time_type, end_time, end_time_type, duration, quantity, category_id, addl_category_id, currency, start_price, reserve_price, buyout_price, is_offer, offer_min, offer_max) VALUES
                (
                    '".addslashes($data[1])."',
                    '".addslashes($data[2])."',
                    '".addslashes($data[3])."',
                    '".addslashes($data[4])."',
                    '".addslashes($data[5])."',
                    '".addslashes($data[6])."',
                    '".addslashes($data[7])."',
                    '".addslashes($data[8])."',
                    '".addslashes($data[9])."',
                    '".addslashes($data[10])."',
                    '".addslashes($data[11])."',
                    '".addslashes($data[12])."',
                    '".addslashes($data[13])."',
                    '".addslashes($data[14])."',
                    '".addslashes($data[15])."',
                    '".addslashes($data[16])."',
                    '".addslashes($data[17])."',
                    '".addslashes($data[18])."',
                    '".addslashes($data[19])."',
                    '".addslashes($data[20])."'
                )
            ");
        }
    }
    while ($data = fgetcsv($handle,10000,",")); 
    //redirect
    header('Location: import.php?success=1'); die;
}
?>

Import.php という別のファイル

<?php

//connect to the database

mysql_connect ("localhost","root","password")
  or die ('Error: ' . mysql_error());

echo "connected to database!";

mysql_select_db ("mydatadb");

// Insert data into table

        $name = mysql_real_escape_string($data[1]);
        $description = mysql_real_escape_string($data[2]);
        $owner_id = mysql_real_escape_string($data[3]);
        $list_in = mysql_real_escape_string($data[4]);
        $auction_type = mysql_real_escape_string($data[5]);
        $start_time = mysql_real_escape_string($data[6]);
        $start_time_type = mysql_real_escape_string($data[7]);
        $end_time = mysql_real_escape_string($data[8]);
        $end_time_type = mysql_real_escape_string($data[9]);
        $duration = mysql_real_escape_string($data[10]);
        $quantity = mysql_real_escape_string($data[11]);
        $category_id = mysql_real_escape_string($data[12]);
        $addl_category_id = mysql_real_escape_string($data[13]);
        $currency = mysql_real_escape_string($data[14]);
        $start_price = mysql_real_escape_string($data[15]);
        $reserve_price = mysql_real_escape_string($data[16]);
        $buyout_price = mysql_real_escape_string($data[17]);
        $is_offer = mysql_real_escape_string($data[18]);
        $offer_min = mysql_real_escape_string($data[19]);
        $offer_max = mysql_real_escape_string($data[20]);

$action = mysql_real_escape_string('insert php code for button here');

$query = "INSERT INTO bulk_listings
         (name, description, owner_id, list_in, auction_type, start_time, start_time_type, end_time, end_time_type, duration, quantity, category_id, addl_category_id, currency, start_price, reserve_price, buyout_price, is_offer, offer_min, offer_max)
         VALUES
         ('$name', '$description', '$owner_id', '$list_in', '$auction_type', '$start_time', '$start_time_type', '$end_time', '$end_time_type', '$duration', '$quantity', '$category_id', '$addl_category_id', '$currency', '$start_price', '$reserve_price', '$buyout_price', '$is_offer', '$offer_min', '$offer_max') ";
mysql_query($query) or die ('Error updating database');

echo "Database updated successfully!";

?>
</body>
</html>

私が試した - fgetcsv() & while ($data = fgetcsv($handle,10000,",")); しかし、まだ機能していません。

私を助けて、どこが間違っているのか教えてください。

ありがとう

4

2 に答える 2

0

基本的に、最初の行である配列から最初のインデックスを削除したい..

$data = fgetcsv($handle,10000,","));
$data = array_shift($data);
于 2013-05-09T10:36:19.793 に答える
0

投稿されたコードの最初の部分では、ハンドルを作成した後に次の行を追加する必要があります。

$handle = fopen($file,"r");

になります:

$handle = fopen($file,"r");
fgetcsv($handle,10000,",");

これは最初の行を取得し、ループの開始時にポインターが 2 行目にあるため、ループ内でそれを無視します。

于 2013-05-09T10:27:08.987 に答える