Jump to content

Recommended Posts

So I am tryting to create a script to upload a CSV file into a MySql DB. It has like 10K records into SQL

 

My Code is copy below ...

 

I get the following errors.

 

  • Line 16 is the $handle
  • line 18 is the While Statement

 

Error:

Warning: fopen(): Filename cannot be empty in C:\local\htdocs\ADPStorage\DemandCSV.php on line 16

Warning: fopen()expects parameter 1 to be resource, boolean given in C:\local\htdocs\ADPStorage\DemandCSV.php on line 18

 

 

 

I use my script for another table and it worked like a charm. Less data and less colums do.

 

Bad Code: (good Code sample below. this one)

<?php

$today = date("m.d.y.h.m.s");                       
echo $today;

$BPTD_fy = '2014';
$BPTD_updatedate = $today;

  $conn = mysql_connect("Localhost","root","password") or die (mysql_error());
  mysql_select_db("ds_storage",$conn);
  
	if(isset($_POST['submit']))
	{
		$file = $_FILES['file']['tmp_name'];
		  
		  $handle = fopen($file, "r");
		
		while(($fileop = fgetcsv($handle, 100000, ",")) !==FALSE)
		{
			$BPTD_fy = $fileop[0];
			$BPTD_Status = $fileop[1];
			$BPTD_Classification = $fileop[2];
			$BPTD_ProcureCat = $fileop[3];
			$BPTD_Product = $fileop[4];
			$BPTD_Project = $fileop[5];
			$BPTD_DSCategory = $fileop[6];
			$BPTD_Calculated = $fileop[7];
			$BPTD_CapacityType = $fileop[8];
			$BPTD_Amount = $fileop[9];
			$BPTD_Jul = $fileop[10];
			$BPTD_Aug = $fileop[11];
			$BPTD_Sep = $fileop[12];
			$BPTD_Oct = $fileop[13];
			$BPTD_Nov = $fileop[14];
			$BPTD_Dec = $fileop[15];
			$BPTD_Jan = $fileop[16];
			$BPTD_Feb = $fileop[17];
			$BPTD_Mar = $fileop[18];
			$BPTD_Apr = $fileop[19];
			$BPTD_May = $fileop[20];
			$BPTD_Jun = $fileop[21];
			$BPTD_Location = $fileop[22];
			$BPTD_Env = $fileop[23];
			$BPTD_Requester = $fileop[24];
			$BPTD_ServiceArea = $fileop[25];
			$BPTD_ServiceGroup = $fileop[26];
			$BPTD_DepHead = $fileop[27];
			$BPTD_Recgroup = $fileop[28];
			$BPTD_RecOwner = $fileop[29];
			$BPTD_Entrydate = $fileop[30];
			$BPTD_updatedate = $fileop[31];
			
			
			$sql = mysql_query("INSERT INTO inv_bpt_demand (Status, Classification, ProcureCat, Product, Project, DSCategory, Calculated, CapacityType, Amount, Jul, Aug, Sep, Oct, Nov, Dec, 
			Jan, Feb, Mar, Apr, May, Jun, Location, Env, Requester, ServiceArea, ServiceGroup, DepHead, Recgroup, RecOwner, Entrydate, updatedate) 
			
			VALUES ('$BPTD_Status', '$BPTD_Classification', '$BPTD_ProcureCat', '$BPTD_Product', '$BPTD_Project', '$BPTD_DSCategory', '$BPTD_Calculated', '$BPTD_CapacityType', '$BPTD_Amount',
			'$BPTD_Jul', '$BPTD_Aug', '$BPTD_Sep', '$BPTD_Oct', '$BPTD_Nov', '$BPTD_Dec', '$BPTD_Jan', '$BPTD_Feb', '$BPTD_Mar', '$BPTD_Apr','$BPTD_May', '$BPTD_Jun','$BPTD_Location',
			'$BPTD_Env','$BPTD_Requester', '$BPTD_ServiceArea', '$BPTD_ServiceGroup','$BPTD_DepHead', '$BPTD_Recgroup','$BPTD_RecOwner','$BPTD_Entrydate','$BPTD_updatedate')");
			
			if($sql)
			{
			echo 'Data Uploaded Successfully';
			
			}
		}
	}
  
?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>BPT Demand CSV</title>
  <link rel="stylesheet" type="text/css" href="file:///C|/local/htdocs/style/style.css" />
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
  <div id="mainWrapper">

    <form method="post" action="https://localhost/Storage/DemandCSV.php" enctype="multipart/form-data">
        <input type="file" name="file" />
        <br />
        <input type="submit" name="submit" value="Submit" />
    </form>
    
  </div><!--end mainWrapper-->
</body>
</html>

Similar Working code (good)

<?php
  $conn = mysql_connect("Localhost","root","password") or die (mysql_error());
  mysql_select_db("ds_storage",$conn);
  
	if(isset($_POST['submit']))
	{
		$file = $_FILES['file']['tmp_name'];
		  
		  $handle = fopen($file, "r");
		
		while(($fileop = fgetcsv($handle,1000,",")) !==FALSE)
		{
			
			$PC_Num = $fileop[0];
			$PC_Name = $fileop[1];
			$PC_BPTNUM = $fileop[2];
			$PC_busclass = $fileop[3];
			$PC_Note = $fileop[4];
			$PC_Acro = $fileop[5];
			$PC_type = $fileop[6];
						
			///echo $fileop[1];
			$sql = mysql_query("INSERT INTO inv_names (PC_Num, PC_Name, PC_BPTNUM, PC_busclass, PC_Note, PC_Acro, PC_type) 
			VALUES ('$PC_Num', '$PC_Name', '$PC_BPTNUM', '$PC_busclass', '$PC_Note', '$PC_Acro', '$PC_type')");
			
			if($sql)
			{
			echo 'Data Uploaded Successfully';
			
			}
		}
	}
  
?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Upload CSV</title>
  <link rel="stylesheet" type="text/css" href="file:///C|/local/htdocs/style/style.css" />
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
  <div id="mainWrapper">

    <form method="post" action="https://localhost/Storage/Storage_CSV.php" enctype="multipart/form-data">
        <input type="file" name="file" />
        <br />
        <input type="submit" name="submit" value="Submit" />
    </form>
    
  </div><!--end mainWrapper-->
</body>
</html>

Please help and thx in advance

 

~J

Prove to yourself that the value you are using to open the file has something in it - add an echo of $_FILES['file']['tmp_name']

 

PS - you should ALWAYS check the results of a query or a file open command to ensure that it was successful.. If you had done that here you would have only shown that one error.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.