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 の回答に関するコメントで指摘した「未定義の変数」の問題も解決される可能性があります。

もう1つ注意してください...残りのロジックを中括弧で囲んでいないため、ループは行を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 に答える