使用PHP和MySQL的CSV文件 - 数据无法在数据库中正确上传

时间:2013-05-08 15:34:02

标签: php mysql sql phpmyadmin

我从 - http://www.k-fez.com/?p=101网站下载脚本并尝试在我的服务器上上传CSV文件。它成功上传文件但空白 - 请检查图像

<?PHP
session_start();

if($_FILES["file"]["type"] != "application/vnd.ms-excel"){
    die("This is not a CSV file.");
}
elseif(is_uploaded_file($_FILES['file']['tmp_name'])){
    //Connect to the database
    $dbhost = 'Localhost';
    $dbuser = 'root';
    $dbpass = 'password';
    $dbname = 'auction_tbl';
    $link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql server');
    mysql_select_db($dbname);

    //Process the CSV file
    $findings = "
<form method=\"post\" action=\"importCSV.php\">
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
<td>Checking...</td>
";
    $handle = fopen($_FILES['file']['tmp_name'], "r");
    $data = fgetcsv($handle, 10000, ";"); //Remove if CSV file does not have column headings
    while (($data = fgetcsv($handle, 10000, ";")) !== FALSE) {
$auction_id = mysql_real_escape_string($data[0]);
$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]);
$enable_swap = mysql_real_escape_string($data[21]);
$bid_increment_amount = mysql_real_escape_string($data[22]);
$zip_code = mysql_real_escape_string($data[23]);
$state = mysql_real_escape_string($data[24]);
$country = mysql_real_escape_string($data[25]);
$postage_amount = mysql_real_escape_string($data[26]);
$insurance_amount = mysql_real_escape_string($data[27]);
$item_weight = mysql_real_escape_string($data[28]);
$shipping_method = mysql_real_escape_string($data[29]);
$shipping_int = mysql_real_escape_string($data[30]);
$type_service = mysql_real_escape_string($data[31]);
$shipping_details = mysql_real_escape_string($data[32]);
$payment_methods = mysql_real_escape_string($data[33]);
$direct_payment = mysql_real_escape_string($data[34]);
$hpfeat = mysql_real_escape_string($data[35]);
$catfeat = mysql_real_escape_string($data[36]);
$bold = mysql_real_escape_string($data[37]);
$hl = mysql_real_escape_string($data[38]);
$hidden_bidding = mysql_real_escape_string($data[39]);
$apply_tax = mysql_real_escape_string($data[40]);
$auto_relist_bids = mysql_real_escape_string($data[41]);
$auto_relist_nb = mysql_real_escape_string($data[42]);
$force_payment = mysql_real_escape_string($data[43]);
$fb_decrement_amount = mysql_real_escape_string($data[44]);
$fb_decrement_interval = mysql_real_escape_string($data[45]);
$fb_next_decrement = mysql_real_escape_string($data[46]);
$images_details = mysql_real_escape_string($data[47]);
$media_details = mysql_real_escape_string($data[48]);
$dd_details = mysql_real_escape_string($data[49]);
$custom_fields_details = mysql_real_escape_string($data[50]);
$import_date = mysql_real_escape_string($data[51]);

        //Check if row is in database already
        $sql = "SELECT *
                FROM `bulk_listings`
                WHERE `auction_id` = '" . $auction_id . "'";    //In this example attribute0 is the primary key
        $result = mysql_query($sql);
        $count = mysql_num_rows($result);
        if($count > 0){
            $findings = $findings . "
  <tr>
    <td bgcolor=\"#FF0000\">DB Duplicate</td>
<td>" . $auction_id . "</td>
<td>" . $name . "</td>
<td>" . $description . "</td>
<td>" . $owner_id . "</td>
<td>" . $list_in . "</td>
<td>" . $auction_type . "</td>
<td>" . $start_time . "</td>
<td>" . $start_time_type . "</td>
<td>" . $end_time . "</td>
<td>" . $end_time_type . "</td>
<td>" . $duration . "</td>
<td>" . $quantity . "</td>
<td>" . $category_id . "</td>
<td>" . $addl_category_id . "</td>
<td>" . $currency . "</td>
<td>" . $start_price . "</td>
<td>" . $reserve_price . "</td>
<td>" . $buyout_price . "</td>
<td>" . $is_offer . "</td>
<td>" . $offer_min . "</td>
<td>" . $offer_max . "</td>
<td>" . $enable_swap . "</td>
<td>" . $bid_increment_amount . "</td>
<td>" . $zip_code . "</td>
<td>" . $state . "</td>
<td>" . $country . "</td>
<td>" . $postage_amount . "</td>
<td>" . $insurance_amount . "</td>
<td>" . $item_weight . "</td>
<td>" . $shipping_method . "</td>
<td>" . $shipping_int . "</td>
<td>" . $type_service . "</td>
<td>" . $shipping_details . "</td>
<td>" . $payment_methods . "</td>
<td>" . $direct_payment . "</td>
<td>" . $hpfeat . "</td>
<td>" . $catfeat . "</td>
<td>" . $bold . "</td>
<td>" . $hl . "</td>
<td>" . $hidden_bidding . "</td>
<td>" . $apply_tax . "</td>
<td>" . $auto_relist_bids . "</td>
<td>" . $auto_relist_nb . "</td>
<td>" . $force_payment . "</td>
<td>" . $fb_decrement_amount . "</td>
<td>" . $fb_decrement_interval . "</td>
<td>" . $fb_next_decrement . "</td>
<td>" . $images_details . "</td>
<td>" . $media_details . "</td>
<td>" . $dd_details . "</td>
<td>" . $custom_fields_details . "</td>
<td>" . $import_date . "</td>
  </tr>";
        }

        //Check if row is already in INSERT queue
        elseif(strpos($_SESSION['insert'], "'" . $auction_id . "'") != false){
            $findings = $findings . "
  <tr>
    <td bgcolor=\"#FF0000\">File Duplicate</td>
<td>" . $auction_id . "</td>
<td>" . $name . "</td>
<td>" . $description . "</td>
<td>" . $owner_id . "</td>
<td>" . $list_in . "</td>
<td>" . $auction_type . "</td>
<td>" . $start_time . "</td>
<td>" . $start_time_type . "</td>
<td>" . $end_time . "</td>
<td>" . $end_time_type . "</td>
<td>" . $duration . "</td>
<td>" . $quantity . "</td>
<td>" . $category_id . "</td>
<td>" . $addl_category_id . "</td>
<td>" . $currency . "</td>
<td>" . $start_price . "</td>
<td>" . $reserve_price . "</td>
<td>" . $buyout_price . "</td>
<td>" . $is_offer . "</td>
<td>" . $offer_min . "</td>
<td>" . $offer_max . "</td>
<td>" . $enable_swap . "</td>
<td>" . $bid_increment_amount . "</td>
<td>" . $zip_code . "</td>
<td>" . $state . "</td>
<td>" . $country . "</td>
<td>" . $postage_amount . "</td>
<td>" . $insurance_amount . "</td>
<td>" . $item_weight . "</td>
<td>" . $shipping_method . "</td>
<td>" . $shipping_int . "</td>
<td>" . $type_service . "</td>
<td>" . $shipping_details . "</td>
<td>" . $payment_methods . "</td>
<td>" . $direct_payment . "</td>
<td>" . $hpfeat . "</td>
<td>" . $catfeat . "</td>
<td>" . $bold . "</td>
<td>" . $hl . "</td>
<td>" . $hidden_bidding . "</td>
<td>" . $apply_tax . "</td>
<td>" . $auto_relist_bids . "</td>
<td>" . $auto_relist_nb . "</td>
<td>" . $force_payment . "</td>
<td>" . $fb_decrement_amount . "</td>
<td>" . $fb_decrement_interval . "</td>
<td>" . $fb_next_decrement . "</td>
<td>" . $images_details . "</td>
<td>" . $media_details . "</td>
<td>" . $dd_details . "</td>
<td>" . $custom_fields_details . "</td>
<td>" . $import_date . "</td>
  </tr>";
        }

        //Row is unique
        else{
            //Add INSERT statement to INSERT queue
            $_SESSION['insert'] .= "INSERT INTO `bulk_listings` (
        `auction_id`,
        `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`,
        `enable_swap`,
        `bid_increment_amount`,
        `zip_code`,
        `state`,
        `country`,
        `postage_amount`,
        `insurance_amount`,
        `item_weight`,
        `shipping_method`,
        `shipping_int`,
        `type_service`,
        `shipping_details`,
        `payment_methods`,
        `direct_payment`,
        `hpfeat`,
        `catfeat`,
        `bold`,
        `hl`,
        `hidden_bidding`,
        `apply_tax`,
        `auto_relist_bids`,
        `auto_relist_nb`,
        `force_payment`,
        `fb_decrement_amount`,
        `fb_decrement_interval`,
        `fb_next_decrement`,
        `images_details`,
        `media_details`,
        `dd_details`,
        `custom_fields_details`,
        `import_date`
                    )
                    VALUES ('" . $auction_id . "', '" . $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 . "', '" . $enable_swap . "', '" . $bid_increment_amount . "', '" . $zip_code . "', '" . $state . "', '" . $country . "', '" . $postage_amount . "', '" . $insurance_amount . "', '" . $item_weight . "', '" . $shipping_method . "', '" . $shipping_int . "', '" . $type_service . "', '" . $shipping_details . "', '" . $payment_methods . "', '" . $direct_payment . "', '" . $hpfeat . "', '" . $catfeat . "', '" . $bold . "', '" . $hl . "', '" . $hidden_bidding . "', '" . $apply_tax . "', '" . $auto_relist_bids . "', '" . $auto_relist_nb . "', '" . $force_payment . "', '" . $fb_decrement_amount . "', '" . $fb_decrement_interval . "', '" . $fb_next_decrement . "', '" . $images_details . "', '" . $media_details . "', '" . $dd_details . "', '" . $custom_fields_details . "', '" . $import_date . "');";

            //Add row for row to findings table and mark unique
            $findings = $findings . "
  <tr>
    <td bgcolor=\"#00FF00\">&nbsp;</td>
<td>" . $auction_id . "</td>
<td>" . $name . "</td>
<td>" . $description . "</td>
<td>" . $owner_id . "</td>
<td>" . $list_in . "</td>
<td>" . $auction_type . "</td>
<td>" . $start_time . "</td>
<td>" . $start_time_type . "</td>
<td>" . $end_time . "</td>
<td>" . $end_time_type . "</td>
<td>" . $duration . "</td>
<td>" . $quantity . "</td>
<td>" . $category_id . "</td>
<td>" . $addl_category_id . "</td>
<td>" . $currency . "</td>
<td>" . $start_price . "</td>
<td>" . $reserve_price . "</td>
<td>" . $buyout_price . "</td>
<td>" . $is_offer . "</td>
<td>" . $offer_min . "</td>
<td>" . $offer_max . "</td>
<td>" . $enable_swap . "</td>
<td>" . $bid_increment_amount . "</td>
<td>" . $zip_code . "</td>
<td>" . $state . "</td>
<td>" . $country . "</td>
<td>" . $postage_amount . "</td>
<td>" . $insurance_amount . "</td>
<td>" . $item_weight . "</td>
<td>" . $shipping_method . "</td>
<td>" . $shipping_int . "</td>
<td>" . $type_service . "</td>
<td>" . $shipping_details . "</td>
<td>" . $payment_methods . "</td>
<td>" . $direct_payment . "</td>
<td>" . $hpfeat . "</td>
<td>" . $catfeat . "</td>
<td>" . $bold . "</td>
<td>" . $hl . "</td>
<td>" . $hidden_bidding . "</td>
<td>" . $apply_tax . "</td>
<td>" . $auto_relist_bids . "</td>
<td>" . $auto_relist_nb . "</td>
<td>" . $force_payment . "</td>
<td>" . $fb_decrement_amount . "</td>
<td>" . $fb_decrement_interval . "</td>
<td>" . $fb_next_decrement . "</td>
<td>" . $images_details . "</td>
<td>" . $media_details . "</td>
<td>" . $dd_details . "</td>
<td>" . $custom_fields_details . "</td>
<td>" . $import_date . "</td>
  </tr>";
        }
    }
    mysql_close($link);

    $findings = $findings . "
  <tr>
    <td colspan=\"5\"><div align=\"center\"><input type=\"submit\" value=\"Confirm\" /></div></td>
  </tr>
</table>
</form>";
    echo $findings;
}
else{
    die("You shouldn't be here");
}
?>

importCSV.php(对不起,我忘了没有其他文件代码。)

<?PHP
session_start();
if(!isset($_SESSION['insert'])){
    die("You shouldn't be here.");
}

//Connect to the database
    $dbhost = 'Localhost';
    $dbuser = 'root';
    $dbpass = 'password';
    $dbname = 'auction_tbl';
    $link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql server');
    mysql_select_db($dbname);

$queries = explode(';', $_SESSION['insert']);

foreach($queries as $query){
    if($query != ""){
        mysql_query($query);
    }
}

mysql_close($link);

echo "Done";
?>

enter image description here

由于

2 个答案:

答案 0 :(得分:0)

//获取csv文件     $ 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 contacts_tmp (contact_first, contact_last, contact_email) VALUES
            (
                '".addslashes($data[0])."',
                '".addslashes($data[1])."',
                '".addslashes($data[2])."'
            )
        ");
    }
} while ($data = fgetcsv($handle,1000,",","'"));

答案 1 :(得分:0)

正确检查数据库字段数据类型 我认为这个问题的数据库字段数据类型是错误的。