2013-12-09 115 views
0

我的代碼在下面,我不明白這個代碼中有什麼問題,因爲我的數據沒有保存在mysql數據庫表中。有人告訴我,我的代碼有什麼問題嗎? ================================================= ==============================================================數據不保存在MySQL數據庫中

<?php 

    $con = mysql_connect('localhost','root','') or die(mysql_error()); 

    mysql_select_db('csv_data',$con) or die(mysql_error()); 

    $data = array(); 
    if(isset($_FILES['submit'])){ 
     if($FILES['csv_file']['size'] > 0){ 
      $file = $_FILES['csv_file']['tmp_name']; 
      $handle = fopen($file,"r"); 

     while($data = fgetcsv($handle, 134217728, ',')){ 
      $query = "INSERT INTO data(url) VALUES ('".$data[0]."')"; 
      mysql_query($query) or die(mysql_error()); 
      echo "File Uploaded."; 

     } 
    } 
} 
?> 
<body> 
<form name="frm" action="save_csv_in_mysql_table.php" method="post"> 
    <input type="file" name="csv_file" value="Upload Csv File"/> 
    <input type="submit" name="submit" value="Upload CSV File"/> 
</form> 
</body> 
+1

嘗試使用錯誤處理程序。 – Kermit

+0

不是'if(isset($ _ FILES ['submit'])){'but'if(isset($ _ POST ['submit'])){'for'''或者您可能打算使用'if(isset($ _ FILES ['csv_file'])){'''來處理'' - 可能會打開一個潛在的「蠕蟲罐」,就像它一樣。嘗試/或。 –

+0

[不要使用mysql_ *](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?rq=1) –

回答

0

你需要使用if(isset($_POST['submit'])){

PHP:

$con = mysql_connect('localhost','root','') or die(mysql_error()); 

    mysql_select_db('csv_data',$con) or die(mysql_error()); 

    $data = array(); 
    if(isset($_POST['submit'])){ 
     if($FILES['csv_file']['size'] > 0){ 
      $file = $_FILES['csv_file']['tmp_name']; 
      $handle = fopen($file,"r"); 

      while($data = fgetcsv($handle, 134217728, ',')){ 
       $query = "INSERT INTO data(url) VALUES ('".$data[0]."')"; 
       mysql_query($query) or die(mysql_error()); 
       echo "File Uploaded."; 

      } 
     } 
    } 
+0

讓我們希望這不是一個「蠕蟲的罐頭」,因爲它是;-)祝你好運 –

+0

現在產生這個錯誤: - 注意:未定義的變量:D:\ xampp \ htdocs \ Get_Set_CSV \ save_csv_in_mysql_table.php中的文件在第29行 – user2965171

+0

enctype =「multipart/form-data」在你的表格中缺失 –

0

什麼是$ _FILES [ '提交']?我想,你沒有這個指數。

嘗試在一開始

print_r($_POST); 
print_r($_FILES); 

,比創建一個普通的語句添加。

例如:

if (isset($_FILES['csv_file'])) {do something} 

在第二:不要使用INSERT結合的mysql_query。閱讀關於PDO,它是安全和舒適的。您的代碼中存在一個漏洞(SQL注入)。

0

您已經構建了形式錯誤,所以沒有文件被上傳:

<form enctype="multipart/form-data" name="frm" action="save_csv_in_mysql_table.php" method="post" > 
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^--missing 

你失敗則檢查是否上傳實際上是成功的,只是失蹄開始盲目:

if (isset($_FILES['csv_file']['error']) && ($_FILES['csv_file']['error'] !== UPLOAD_ERR_OK)) { 
    die("Upload failed with error code#: " . $_FILES['csv_file']['error']); 
} 

你然後一味地嘗試從這個文件中汲取數據,並將這些數據直接插入到查詢字符串中,同時也讓您開放至SQL injection attacks

+0

我知道這個問題是一個「蠕蟲罐」。很多事情不會「正確」。 –

+0

謝謝,你的回答是正確的: -

user2965171