-1

csv ファイルを mysql にアップロードするための管理ページを作成します。ファイルcsvのサイズは59,9mbです。しかし、私のスクリプトはファイルを mysql にアップロードしませんでした。この問題を解決するのを手伝ってくれませんか? これが私のコードです:

<HTML>
<HEAD>
<TITLE> Admin Update </TITLE>
</HEAD>

<BODY>
<form enctype='multipart/form-data' action="<?php echo $PHP_SELF ?>" method='post'>
<font face=arial size=2>Type file name to import:</font><br>
<input type='file' name='filename' size='20'><br>
<input type='submit' name='submit' value='submit'></form>
<?php
include("phpsqlajax_dbinfo.php");
$connection = mysql_connect ('127.0.0.1', $username, $password);
if (!$connection) {  die('Not connected : ' . mysql_error());} 

$db_selected = mysql_select_db("ipcoba", $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
} 
if(isset($_POST['submit']))
{
// address to copy csv file
$target_path = "C:/xampp/htdocs/bikinwebtracert";     

$target_path = $target_path . basename( $_FILES['filename']['name']);

if(move_uploaded_file($_FILES['filename']['tmp_name'], $target_path)) {
echo "<font face=arial size=2>The file ". basename( $_FILES['filename']['name']). " Upload Success</font><br>";
} else{
echo "<font face=arial size=2>Failed to Upload, Please try again</font><br>";
}

$filename=$target_path;
$load=mysql_query("LOAD DATA LOCAL INFILE $filename INTO TABLE CityBlocks FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 2 LINES (startIpNum, endIpNum, locId)'\n' ") or die(mysql_error());
if ($load){
echo("Failed");
} else {
echo("Success");
}
}
?>
</BODY>
</HTML>

できるだけ早くこの問題を解決する必要があります。助けてください。ありがとうございました。

4

2 に答える 2

0

そのインポート コマンドを使用して、コマンド ラインからファイルを mysql にインポートできますか? 残りのコードを調査する前に、最初にそれが機能していることを確認してください。

編集:

mysql_queryによると、成功した場合は TRUE またはリソースが返され、成功しなかった場合は FALSE が返されます。あなたのコードにはこれがあります:

if ($load){
    echo("Failed");
} else {
    echo("Success");
}

論理エラーの可能性があると思います。コードを次のように変更してみて、何が起こるか教えてください。

$load=mysql_query("LOAD DATA LOCAL INFILE $filename INTO TABLE CityBlocks FIELDS  TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 2 LINES (startIpNum, endIpNum, locId)'\n' ");
if (!$load){
    echo mysql_error();
} else {
echo("Success");
}
于 2012-06-23T01:47:33.987 に答える
0

1 - エラーが発生した場所を検出するために、フィルターを改善してみてください

2 - csv ファイルには 1 つの名前を使用してみてください (アップロードされたファイルの名前を test.csv に変更します)。セキュリティを確保し、ファイルが正常にアップロードされることを確認します。

3 - move_uploaded_file の代わりに file_get_contents を使用してみてください

4 - エラーがいつ発生したか確認してください。アップロード中またはインポート中にエラーが発生しましたか?

このコードを試してください:

編集

問題が解決してよかったです

私は可能な限り説明しました、私の英語で申し訳ありません

<?php

/*
The script idea is
1- we get the file name on the user computer
2- we rename it to import.csv
3- we check if file already exists or not
4- we upload the file
5- import the file
*/

/*
STEP 1
if there is incoming files.
*/
if(!$_FILES['filename']['tmp_name']||empty($_FILES['filename']['tmp_name']))
    die('Please select a file');
if($_FILES['filename']['tmp_name']){
/*
STEP 2
Here we will check if there is import.csv file
if there is import.csv file, that's mean there is a process underway
*/
    if(file_exists('/tmp/import.csv'))
        die('Please wait, we still working on the previous process...');
/*
File path
on the user computer
*/
    $filepath=$_FILES['filename']['tmp_name'];
/*
New path for the file
/tmp folder.. always have a permits that allow the lifting of the file
*/
    $newpath='/tmp/import.csv';
/*
Get the content of the file
read more about file_get_contents()
*/
    $getFile=file_get_contents($filepath);
/*
file_put_contents()
function that's requires to parametrs #1 file name #2 file content
and it will create a file with the name and content that you have provided
*/
    $uploade=(!empty($getFile))?file_put_contents($newpath,$getFile):die('We cant get the file!');
/*
if file exists we have succeed
*/
    if(!file_exists($newpath))
        die('The file did not uploaded..');

    //import to database
    $load = mysql_query("LOAD DATA LOCAL .........");
    if($load){
        //remove the file..
        unlink($newpath);
        echo 'success...';
    }

    else{
        echo(file_exists($getFile))?'File uploaded but did not imported to mysql':'File not uploaded';
    }

}



?>
于 2012-06-23T01:04:03.750 に答える