By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,120 Members | 1,786 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,120 IT Pros & Developers. It's quick & easy.

why this load data infile doesn't work?

P: n/a
hi all,

I wonder why this little script doesn't work, maybe it's the provider
not allowing the use of load data infile ( I know some don't let users
to run some tasks ), could you please tell me if the script it's right
before I ask the provider ?
I can insert data into the table using fgetcsv as well with no
problems,but I would like to understand.

TIA

johnny

<?php

$table = "name of table here";
$file = "absolute path to file uploaded /" ;
$new_name = "list.csv"; // new name of the file uploaded
$file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];
$path = $file.$file_name ;
if (copy($upfile, $path))
{
echo "upload Ok";

} else {
echo "upload failed";
}
$sql = "LOAD DATA INFILE '$path' FIELDS INTO TABLE $table
(field1,field2) TERMINATED BY ';' LINES TERMINATED BY '\r\n' IGNORE 1
LINES " or die();

?>

Feb 3 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
johnny wrote:
hi all,

I wonder why this little script doesn't work, maybe it's the provider
not allowing the use of load data infile ( I know some don't let users
to run some tasks ), could you please tell me if the script it's right
before I ask the provider ?
I can insert data into the table using fgetcsv as well with no
problems,but I would like to understand.

TIA

johnny
Hi Johnny,

<?php

$table = "name of table here";
$file = "absolute path to file uploaded /" ;
$new_name = "list.csv"; // new name of the file uploaded
$file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];
I do not understand the reason for this line/test.
It always evalute to true, so $file_name will always be $new_name.

Did you copy it from another file that needs this test?



$path = $file.$file_name ;
OK, so path is now:absolute path to file uploaded/list.csv



if (copy($upfile, $path))
What is $upfile?
Udefined as far as I can see.
{
echo "upload Ok";

} else {
echo "upload failed";
}
$sql = "LOAD DATA INFILE '$path' FIELDS INTO TABLE $table
(field1,field2) TERMINATED BY ';' LINES TERMINATED BY '\r\n' IGNORE 1
LINES " or die();


You just create a string here.
Why add or die(); ???

I would advise you to put a few echo's in your script to check if the values
you use contain what you expect them to contain.
For starters: The name of an uploaded file in the tempdirectory is not the
filename specified by the sender.

Regards,
Erwin Moller
Feb 3 '06 #2

P: n/a
Al
Erwin Moller wrote:
Hi Johnny,

<?php

$table = "name of table here";
$file = "absolute path to file uploaded /" ;
$new_name = "list.csv"; // new name of the file uploaded
$file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];


I do not understand the reason for this line/test.
It always evalute to true, so $file_name will always be $new_name.

Did you copy it from another file that needs this test?



$path = $file.$file_name ;


OK, so path is now:absolute path to file uploaded/list.csv



if (copy($upfile, $path))


What is $upfile?
Udefined as far as I can see.
{
echo "upload Ok";

} else {
echo "upload failed";
}
$sql = "LOAD DATA INFILE '$path' FIELDS INTO TABLE $table
(field1,field2) TERMINATED BY ';' LINES TERMINATED BY '\r\n' IGNORE 1
LINES " or die();


You just create a string here.
Why add or die(); ???

I would advise you to put a few echo's in your script to check if the values
you use contain what you expect them to contain.
For starters: The name of an uploaded file in the tempdirectory is not the
filename specified by the sender.

Regards,
Erwin Moller

Yeah, basically I don't think your filecopy is actually working.
Assuming you're relying on $upfile to be automatically globaled from
the $_FILES upload, then I still don't think just using copy() works
like that. You need to give copy() the filename, not the array
containing the file's details (which $upfile is if register_globals is
on).

Also, as Erwin said, you never actually execute an SQL query, you just
make the string.

You need something more like:

$sql = "LOAD DATA INFILE '$path' FIELDS INTO TABLE $table
(field1,field2) TERMINATED BY ';' LINES TERMINATED BY '\r\n' IGNORE 1
LINES";

$result = mysql_query($sql) or die("Query failed");

See http://uk.php.net/manual/en/function.mysql-query.php for examples
on executing SQL statements (and slightly better ways of dealing with
query failure.)

Feb 3 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.