0

我的代码有什么问题?..相反,我得到..解析错误:语法错误,意外';'

这是我的示例代码,请您帮助我

<form enctype="multipart/form-data" method="POST" action="" > 
    <input type="file" name="file" /><br />
    <input type="submit" value="upload csv" name"submit"/>
</form>

<?php

    $connection = mysql_connect("localhost","root","")
    or die ("Couldn't connect to server");

    $db = mysql_select_db("demo", $connection)
    or die ("Couldn't select database");

    if(isset($_POST['submit']))
    {
        $file = $_FILES['file']['tmp_name'];
        $handle = fopen($file,"r");
        while(($fileop = fgetcsv($handle,1000,",")) !== FALSE)
        $firstname = $fileop[0];
        $lastname = $fileop[1];
        $email = $fileop[2];

        $sql= mysql_query("INSERT INTO test (first_name,last_name,email)values('$firstname','$lastname','$email')";
    }

    if($sql)
    {
        echo "Hello from PHP.";
    }
    }

?>
4

3 回答 3

1

你的 PHP 中有一个额外的大括号:

if($sql)
{
    echo "Hello from PHP.";
}
} // remove this

此外,您的 sql 查询缺少右括号,应该是:

$sql= mysql_query("INSERT INTO test (first_name,last_name,email)values('$firstname','$lastname','$email')");

您收到的语法错误特别是由于 sql 查询问题 - 它应该是右括号,但找到了一个分号。

您还应该考虑将if ($sql)逻辑移动到if (isset($_POST['submit']))块中,因为它只能在该范围内发生。这也可能解决您在对 Shankar 的回答的评论中提到的“未定义变量”问题。

还要注意...看起来您的while循环只是循环通过该$firstname = $fileop[0];行,因为您在其余逻辑周围没有大括号。你打算这样吗?

if(isset($_POST['submit']))
{
    $file = $_FILES['file']['tmp_name'];
    $handle = fopen($file,"r");

    $processed = false;
    while(($fileop = fgetcsv($handle,1000,",")) !== FALSE)
    {
        $firstname = $fileop[0];
        $lastname = $fileop[1];
        $email = $fileop[2];

        $sql = mysql_query("INSERT INTO test (first_name,last_name,email)values('$firstname','$lastname','$email')");

        $processed = true;
    }

    if($processed)
    {
        echo "CSV was processed.";
    }
    else
    {
        echo "CSV was not processed.";
    }
}
else
{
    echo "Submission was not found.";
}
于 2013-10-18T05:23:42.337 回答
0

这里有一个额外的支架

if($sql)

{
    echo "Hello from PHP.";

} // here..... remove it
}

并将您的 mysql_query 语句更改为

 $sql= mysql_query("INSERT INTO test (first_name,last_name,email)values('$firstname','$lastname','$email')");
于 2013-10-18T05:17:56.203 回答
0

你的问题在这里:

$sql= mysql_query("INSERT INTO test (first_name,last_name,email)values('$firstname','$lastname','$email')";

这还没有正确关闭。它应该看起来像这样(你错过了右括号):

$sql= mysql_query("INSERT INTO test (first_name,last_name,email)values('$firstname','$lastname','$email')");
于 2013-10-18T05:18:07.947 回答