我无法弄清楚语法错误

时间:2013-05-03 21:55:40

标签: php mysql file-upload import

为什么第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';
            }
        }

    }

?>

1 个答案:

答案 0 :(得分: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';
        }
    }
?>