2013-10-18 42 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