Jump to content

Importing csv into Mysql Error


dapcigar

Recommended Posts

Am trying to import a csv file into mysql. below is the code am using.

 

 <?php

//connect to the database
include('mysql_connect.php');//select the table
//

if ($_FILES[csv] > 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 requisition (department, contact_last, contact_email) VALUES
                (
                    '".addslashes($data[0])."',
                    '".addslashes($data[1])."',
                    '".addslashes($data[2])."'
                )
            ");
        }
    } while ($data = fgetcsv($handle,1000,",","'"));
    //

    //redirect
    header('Location: import.php?success=1'); die;

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Import a CSV File with PHP & MySQL</title>
</head>

<body>

<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?>

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  Choose your file: <br />
  <input name="csv" type="file" id="csv" />
  <input type="submit" name="Submit" value="Submit" />
</form>

</body>
</html>
 

...........................................................................................................................................

 

On page load, it gives some erros

Notice: Use of undefined constant csv - assumed 'csv' in C:\wamp\www\orango\upload_data.php on line 7

Notice: Use of undefined constant size - assumed 'size' in C:\wamp\www\orango\upload_data.php on line 7

Notice: Undefined index: csv in C:\wamp\www\orango\upload_data.php on line 7

Notice: Use of undefined constant success - assumed 'success' in C:\wamp\www\orango\upload_data.php on line 43

 

I try to ignore the errors to see if it would work but it didn't save in the DB. please help me out

Link to comment
https://forums.phpfreaks.com/topic/288783-importing-csv-into-mysql-error/
Share on other sites

You're getting those notices because $_FILES wont be populated with any data until the form has been submitted. To prevent the notices you need wrap your form processing code inside a condition example

if(isset($_FILES['csv']))
{
   // process form data
   // insert data from csv file into the database
}

You can automate the insertion of contents of the CSV file by using the MySQL LOAD DATA INFILE query clause. Example code

if (isset($_FILES['csv']))
{
    // import the contents of the csv file into the database
    $result = mysql_query(" LOAD DATA INFILE {$_FILES['csv']['tmp_name']}  # the tmp csv file
                            INTO requisition                               # the table to insert the data to
                            FIELDS TERMINATED BY ',' ENCLOSED BY '\''      # describe how the fields are separated and what character the values are enclosed by
                            IGNORE 1 LINES                                 # ignore the first line - which is usually used for the column headings
              ");

    // check the query did not fail
    if(!$result)
    {
        trigger_error('DB Error: Cannot import csv contents to database - ' . mysql_error());
    }

    // check that query did add the data to the table
    if(mysql_affected_rows())
    {
        header('Location: import.php?success=1'); exit;
    }
    // for some reason no data was added to the table
    else
    {
        echo 'Data was not added to the table!';
    }
}
  • 1 year later...

sir i want to import a csv file to mysql. my program is right for only a particular csv file not for all. I want to do it for all the file that i select.

 

I used $filename = $_FILES['file']['tmp_name'] but it also didnt work.

 

this is my code

<?php 
if(isset($_POST['submit']))
{   
$connect = mysql_connect('127.0.0.1','root','');
if (!$connect) {
 die('Could not connect to MySQL: ' . mysql_error());
 }
$cid =mysql_select_db('ts_order_track',$connect);


        $q="LOAD DATA LOCAL INFILE '"trendspry.csv"' REPLACE INTO TABLE tsd_orders
        FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
        LINES TERMINATED BY '\n' 
        IGNORE 1 LINES
        ( order_id, customer_id, firstname, lastname, email, telephone, mobile, shipping_firstname, shipping_lastname, shipping_mobile, shipping_address_1, shipping_address_2, shipping_city, shipping_zone, shipping_postcode, shipping_country, shipping_method, payment_method, payment_code, weight, date_added, date_modified, import_order_id, sub_total, shipping_charges, tax_charges, total, order_status, courier, awb_code, coupon_amount, coupon_code, product_name, product_sku, product_model, product_quantity, product_price )";
        $s=mysql_query($q, $connect );
       echo "$q";
echo "File data successfully imported to database!!"; 
mysql_close ( $connect );
}
?>

I didnt understand how to use $_FILES['file']['tmp_name'] here.

 

plz help me.. 

thanx in advance.

 

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.