2011-06-25 113 views
0

我知道這個話題已被打入地面,但我真的難倒了。我無法弄清楚爲什麼我得到一個意想不到的錯誤。意外的關閉花括號}錯誤

我的問題是我已經添加到貝寶信用卡終端腳本的代碼片段。它將表單數據捕獲到MySql數據庫中,以便我們可以跟蹤帳單地址信息等等。它會一直工作,直到我添加一條僅在Paypal成功捕獲卡信息時纔將數據發送到MySQL的IF語句。我想這樣做,因爲即使表單未能捕獲CC信息,它仍然會被添加到數據庫中,就好像它是成功的。

這是代碼。再次,它的工作,直到我添加if($ack="SUCCESS") {和相應的結束大括號。如果我刪除大括號,我會得到一個意外的結束錯誤。

什麼是錯誤?在記事本++一切看起來像它匹配。

if($ack="SUCCESS") { 
    $con = mysql_connect("localhost", "dbname", "dbpassword"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 
    mysql_select_db("contributors", $con); 
    $sql="INSERT INTO contributor_information (service, fname, lname, email, address, city, country, state, zip) 
    VALUES 
    ('$_POST[service]','$_POST[fname]','$_POST[lname]','$_POST[email]','$_POST[address]','$_POST[city]','$_POST[country]','$_POST[state]','$_POST[zip]')"; 
    if (!mysql_query($sql,$con)) 
     { 
     die('Error: ' . mysql_error()); 
     } 
    mysql_close($con) 
} 
+0

你在mysql_close($ con) – shelman

+1

之後缺少一個分號而且它應該是if($ ack ==「SUCCESS」),其中double等於 – shelman

+0

。請不要把$ _POST放在你的查詢中。它肯定會有各種各樣的邪惡。使用PDO參數化查詢。 – Nanne

回答

1

你需要mysql_close($con)後一個分號。

您需要在您的POST變量 - $ _POST ['email']等引號。

您需要通過mysql_real_escape_string運行POST變量。

您需要使用的比較,而不是分配(if($ack=="SUCCESS")而不是if($ack="SUCCESS")

大括號是你最擔心的,真的。

+0

謝謝。這段代碼是從W3C複製並粘貼的,所以它實際上是他們的錯誤。 ;)因爲我不知道我在做什麼。 那麼爲什麼它在if語句之前沒有分號就可以工作? – Chad

+0

@Charles:這是因爲程序的最後一行可以不用分號來使用。當你添加if語句時,這行代碼不再是程序的最後一個語句。 –

+0

啊。謝謝。我剛剛訂購了一本PHP/MySql書,所以我希望我提出的下一個問題不會是如此基本的問題! – Chad

0

您錯過了最後一行的;

1

加分號這裏

mysql_close($con); 
0

你可能想要把一個;

mysql_close($con) 

:)