2013-05-03 66 views
1

爲什麼我在第21行有一個sytax錯誤? (在if($ sql)行)我是新來的,無法弄清楚。我一直在旋轉我的輪子一個小時。對於這裏的大多數人來說,我確信它非常簡單。我找不出語法錯誤

<?php 
    $conn = mysql_connect("localhost","root","") or die(mysql_error()); 
    mysql_select_db("solera_menu",$conn); 

    if(isset($_POST['submit'])) 
    { 
     $file = $_FILES['file']['tmp_name']; 

     $handle = fopen($file,"r"); 
     while(($fileop = fgetcsv($handle,1000,",")) !==false) 
     { 
      $order = $fileop[0]; 
      $category = $fileop[1]; 
      $name = $fileop[2]; 
      $description = $fileop[3]; 
      $price = $fileop[4]; 


      $sql = mysql_query("INSERT INTO dinner (order,category,name,description,price) VALUES ('$order','$category','$name','$description','$price')") 

      if($sql) 
      { 
       echo 'Data Uploaded Successfully'; 
      } 
     } 

    } 

?> 
+3

缺少','的'$ SQL年底= ...'行 – 2013-05-03 21:57:37

+0

看看'mysqli'或' PDO'。 'mysql_ *'已棄用;) – Aquillo 2013-05-03 21:58:11

+0

哇,我很蠢!謝謝馬克。我知道這很簡單! – 2013-05-03 21:58:41

回答

4

mysql_query()後無分號。

如果您只是導入CSV文件,請嘗試使用LOAD DATA LOCAL INFILE語句或其命令行界面mysqlimport

這可能比您使用的方法快10-20倍。

它還可以防止您用當前代碼創建的SQL注入漏洞。

這裏有一個粗略的例子,雖然我沒有測試它:

<?php  
    $conn = mysql_connect("localhost","root","") or die(mysql_error()); 
    mysql_select_db("solera_menu",$conn); 

    if(isset($_POST['submit'])) 
    { 
        $file = $_FILES['file']['tmp_name']; 
     $status = mysql_query("LOAD DATA LOCAL INFILE '$file' INTO TABLE dinner"); 

        if($status) 
        { 
         echo 'Data Uploaded Successfully'; 
        } 
    } 
?> 
+0

這行代碼不起作用。注意:未定義的變量:第10行的C:\ wamp \ www \ soleramenu \ upload.php中的sql – 2013-05-03 22:19:32

+0

對不起,我錯過了一個編輯。將$ sql更改爲$ status。還請注意,我沒有測試過這個,我正在對你的CSV文件和你的「晚餐」表做一些必要的假設。 – 2013-05-03 23:24:04