2013-10-18 41 views
0

我的代码有什么问题吗?..而是我得到..Parse错误:语法错误,意外';'上传csv逗号分隔到mysql解析错误:

这里是我的示例代码请愿你帮助我

<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."; 
    } 
    } 

?> 
+0

http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Ryan

回答

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')"); 
+0

对于它的价值,您添加右括号字符串之外,但也从查询的“values()”部分删除了右括号,该部分只是改变了错误。 – DreadPirateShawn

+0

我已删除它 – eddstyson

+0

@DreadPirateShawn,是修改括号。 –

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')"); 
+0

值得一提的是,PHP中还有一个额外的大括号。 – DreadPirateShawn

+0

@DreadPirateShawn谢谢,我没有发现,我只是看着他提供的错误 – Darren

+0

谢谢我已放置,但我得到这个通知:未定义变量: – eddstyson

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']))块,因为它只能在该范围内发生。这也可能解决您在评论尚卡尔答案时注意到的“未定义变量”问题。

还有一点需要注意......看起来您的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."; 
} 
+0

+1用于分析我的查询!^_^ –

+0

你是一个大师....我在等待页面加载它现在花费太长 – eddstyson

+0

页面已经..白色? – eddstyson