I have made the following script to upload a csv and import it into my MYSQL DB, this was my working test, it worked just fine. The problem came with the second example, I added all the fields too it to import but now its not doing a lot, its not giving any errors, it literally just prints the following to the page whenever I try to import anything now :
EDIT >>>>>>>
Is there a way I can turn the INSERT IGNORE message below into some kind of usable error message ?, as at the moment its just echoing the insert command instead of actually showing me any kind of error ?.
Import Successful : name
- INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation, leadname, business, address, town, county, postcode, phone, email, gasoiluser, dervuser, kerouser, annualconsgasoil, annualconsderv, annualconskero, gasoilmargin, dervmargin, keromargin, fueldetails, lubesdetails, otherdetails, sentletterday, sentlettermonth, sentletteryear, sentpostcardday, sentpostcardmonth, sentpostcardyear, sentquoteday, sentquotemonth, sentquoteyear, lastvisitedday, lastvisitedmonth, lastvisitedyear, receivegasoilmailinglist, receivedervmailinglist, receivekeromailinglist, gasoilmailinglist, dervmailinglist, keromailinglist, mailtype, createdby) VALUES ('salutation','name','business name','address','town','county','postcode','phone','email','gasoil user','derv user','kero user','annual consumption gas oil','annual consumption derv','annual consumption kero','gas oil margin','derv margin','kero margin','fuel details','lubes details','other details','sent letter day','sent letter month','sent letter year','sent postcard day','sent postcard month','sent postcard year','sent quote day','sent quote month','sent quote year','last visited day','last visited month','last visited year','mailtype','receive gasoil mailing list frequency','receive derv mailing list frequency','receivekero mailing list frequency','gasoil mailing list','derv mailinglist','kero mailinglist')
This was my initial testing code I used to check that the upload and import function was working properly :
<?php
//database connect info here
//check for file upload
if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){
//upload directory
$upload_dir = "./csv";
//create file name
$file_path = $upload_dir . $_FILES['csv_file']['name'];
//move uploaded file to upload dir
if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
//error moving upload file
echo "Error moving file upload";
}
//open the csv file for reading
$handle = fopen($file_path, 'r');
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
//Access field data in $data array ex.
$leadname = $data[0];
$postcode = $data[1];
$phone = $data[2];
echo 'Import Successful : ';
echo $leadname;
echo '<br/>';
//Use data to insert into db
$sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (leadname, postcode, phone) VALUES ('%s','%s','%s')",
mysql_real_escape_string($leadname),
mysql_real_escape_string($postcode),
mysql_real_escape_string($phone)
);
mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql"));
}
//delete csv file
unlink($file_path);
}
?>
I then went on and added all the fields…….now for some reason its not importing, and is just printing the message at the top of the page. I know I probably have missed something somewhere but I cant find it for the life of me.
<?php
//database connect info here
//check for file upload
if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){
//upload directory
$upload_dir = "./csv";
//create file name
$file_path = $upload_dir . $_FILES['csv_file']['name'];
//move uploaded file to upload dir
if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
//error moving upload file
echo "Error moving file upload";
}
//open the csv file for reading
$handle = fopen($file_path, 'r');
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
//Access field data in $data array ex.
$salutation = $data[0];
$leadname = $data[1];
$business = $data[2];
$address = $data[3];
$town = $data[4];
$county = $data[5];
$postcode = $data[6];
$phone = $data[7];
$email = $data[8];
$gasoiluser = $data[9];
$dervuser = $data[10];
$kerouser = $data[11];
$annualconsgasoil = $data[12];
$annualconsderv = $data[13];
$annualconskero = $data[14];
$gasoilmargin = $data[15];
$dervmargin = $data[16];
$keromargin = $data[17];
$fueldetails = $data[18];
$lubesdetails = $data[19];
$otherdetails = $data[20];
$sentletterday = $data[21];
$sentlettermonth = $data[22];
$sentletteryear = $data[23];
$sentpostcardday = $data[24];
$sentpostcardmonth = $data[25];
$sentpostcardyear = $data[26];
$sentquoteday = $data[27];
$sentquotemonth = $data[28];
$sentquoteyear = $data[29];
$lastvisitedday = $data[30];
$lastvisitedmonth = $data[31];
$lastvisitedyear = $data[32];
$receivegasoilmailinglist = $data[33];
$receivedervmailinglist = $data[34];
$receivekeromailinglist = $data[35];
$gasoilmailinglist = $data[36];
$dervmailinglist = $data[37];
$keromailinglist = $data[38];
$mailtype = $data[39];
$createdby = $data[40];
echo 'Import Successful : ';
echo $leadname;
echo '<br/>';
//Use data to insert into db
$sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation, leadname, business, address, town, county, postcode, phone, email, gasoiluser, dervuser, kerouser, annualconsgasoil, annualconsderv, annualconskero, gasoilmargin, dervmargin, keromargin, fueldetails, lubesdetails, otherdetails, sentletterday, sentlettermonth, sentletteryear, sentpostcardday, sentpostcardmonth, sentpostcardyear, sentquoteday, sentquotemonth, sentquoteyear, lastvisitedday, lastvisitedmonth, lastvisitedyear, receivegasoilmailinglist, receivedervmailinglist, receivekeromailinglist, gasoilmailinglist, dervmailinglist, keromailinglist, mailtype, createdby) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
mysql_real_escape_string($salutation),
mysql_real_escape_string($leadname),
mysql_real_escape_string($business),
mysql_real_escape_string($address),
mysql_real_escape_string($town),
mysql_real_escape_string($county),
mysql_real_escape_string($postcode),
mysql_real_escape_string($phone),
mysql_real_escape_string($email),
mysql_real_escape_string($gasoiluser),
mysql_real_escape_string($dervuser),
mysql_real_escape_string($kerouser),
mysql_real_escape_string($annualconsgasoil),
mysql_real_escape_string($annualconsderv),
mysql_real_escape_string($annualconskero),
mysql_real_escape_string($gasoilmargin),
mysql_real_escape_string($dervmargin),
mysql_real_escape_string($keromargin),
mysql_real_escape_string($fueldetails),
mysql_real_escape_string($lubesdetails),
mysql_real_escape_string($otherdetails),
mysql_real_escape_string($sentletterday),
mysql_real_escape_string($sentlettermonth),
mysql_real_escape_string($sentletteryear),
mysql_real_escape_string($sentpostcardday),
mysql_real_escape_string($sentpostcardmonth),
mysql_real_escape_string($sentpostcardyear),
mysql_real_escape_string($sentquoteday),
mysql_real_escape_string($sentquotemonth),
mysql_real_escape_string($sentquoteyear),
mysql_real_escape_string($lastvisitedday),
mysql_real_escape_string($lastvisitedmonth),
mysql_real_escape_string($lastvisitedyear),
mysql_real_escape_string($mailtype),
mysql_real_escape_string($receivegasoilmailinglist),
mysql_real_escape_string($receivedervmailinglist),
mysql_real_escape_string($receivekeromailinglist),
mysql_real_escape_string($gasoilmailinglist),
mysql_real_escape_string($dervmailinglist),
mysql_real_escape_string($keromailinglist),
mysql_real_escape_string($createdby)
);
mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql"));
}
//delete csv file
unlink($file_path);
}
?>
This doesn’t work in PHP:
two problems:
you don’t use “and” this way; create a control sturcture instead.
you are running the ROLLBACK command and then querying for the SQL error – that probably overrides
mysql_error()‘s value.Try this for error handling: