Jump to content

Error CSV to MySql :Warning: fopen() and Warning: fopen()


JayTheMan

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.

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.