2012-05-23 214 views
0

我有以下函數,用文字說明並驗證它們。如果它們有效,則將它們插入到數據庫中。一旦插入,檢查它們是否被成功插入。如果不返回false。如果電子郵件無效,首先返回false。 Eclipse + Aptana插件報告最後一個部分的語法錯誤。當我試圖合理化代碼時,它似乎應該正常運行。我可以確認所有{括號}的是在正確的等級秩序如果Else語句語法錯誤

下面是代碼:

public function storeUser($name, $email, $password) { 
    $uuid = uniqid('', true); 
    $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; // encrypted password 
    $salt = $hash["salt"]; // salt 
    if((filter_var($email, FILTER_VALIDATE_EMAIL)) && preg_match('/@.+\./', $email)); { //validate the email 
    $result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"); 

    // check for successful store 
    if ($result) { 
     // get user details 
     $uid = mysql_insert_id(); // last inserted id 
     $result = mysql_query("SELECT * FROM users WHERE uid = $uid"); 
     // return user details 
     return mysql_fetch_array($result); 
    } else { 
     return false; //unsuccessful store 
    } 
    else { //THIS IS LINE 45 
     //not a valid email 
     return false; 
    } 
    } 
} 

它返回以下錯誤:

05-23 11:07:10.758: E/JSON(1601): <b>Parse error</b>: syntax error, unexpected T_ELSE in <b>/home/content/40/8529140/html/webapps/projects/functions/DB_Functions.php</b> on line <b>45</b><br /> 
05-23 11:07:10.758: E/JSON Parser(1601): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 
+2

線45上有什麼? – Neal

+0

在代碼中看到我的評論 – KDEx

+2

你應該真的縮進你的代碼 - 它有助於發現丟失或過時的括號。 – acme

回答

2

你的else聲明對於右花括號是錯誤的。如果您在第二個else之前移動其中一個},它將起作用。其實也許不會,你也有一個流浪的;,但其他建議仍然存在。

如果您更加一致地縮進您的代碼,您將不會被這類問題困擾。

public function storeUser($name, $email, $password) { 
    $uuid = uniqid('', true); 
    $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; // encrypted password 
    $salt = $hash["salt"]; // salt 
    if (//validate the email 
     filter_var($email, FILTER_VALIDATE_EMAIL) && 
     preg_match('/@.+\./', $email) 
     ) { 
     $result = mysql_query (
      "INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())" 
     ); 
     if ($result) { // check for successful store 
      // get user details 
      $uid = mysql_insert_id(); // last inserted id 
      $result = mysql_query("SELECT * FROM users WHERE uid = $uid"); 
      // return user details 
      return mysql_fetch_array($result); 
     } else { 
      return false; //unsuccessful store 
     } 
    } else { 
     //not a valid email 
     return false; 
    } 
} 

另外:不要使用mysql_*函數。學習使用PDO和參數化查詢。

+1

**不要**是一個強詞:-P – Neal

+0

就縮進形式而言,好的建議,更多的常量可能會幫助我抓住它。 – KDEx

3
if((filter_var($email, FILTER_VALIDATE_EMAIL)) 
     && preg_match('/@.+\./', $email)); { //<<<REMOVE THE ; 
+0

@KDEx刪除分號! – Neal

-2

你爲什麼最後有兩塊else {}塊......?你只能有一個。

+2

有2個if語句。 – Neal

1

您沒有正確關閉您的括號和你有外if後多餘的分號:

if((filter_var($email, FILTER_VALIDATE_EMAIL)) && preg_match('/@.+\./', $email)) { //validate the email 
    $result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"); 

    // check for successful store 
    if ($result) { 
     // get user details 
     $uid = mysql_insert_id(); // last inserted id 
     $result = mysql_query("SELECT * FROM users WHERE uid = $uid"); 
     // return user details 
     return mysql_fetch_array($result); 
    } else { 
    return false; //unsuccessful store 
    } 
} // close of outer if 
else { 
    //not a valid email 
    return false; 
}  
+0

爲什麼downvote? – Tudor

+0

錯誤....在那之後有一個分號如果語句... – Neal

+0

@Neal:修正它,但他的外層如果沒有正確關閉。 – Tudor

1

你看到的這一端小分號? if((filter_var($email, FILTER_VALIDATE_EMAIL)) && preg_match('/@.+\./', $email));

0

您錯位了一個支架。試試這個

public function storeUser($name, $email, $password) { 
    $uuid = uniqid('', true); 
    $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; // encrypted password 
    $salt = $hash["salt"]; // salt 
    if((filter_var($email, FILTER_VALIDATE_EMAIL)) && preg_match('/@.+\./', $email)) { //validate the email 
    $result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"); 

    // check for successful store 
    if ($result) { 
     // get user details 
     $uid = mysql_insert_id(); // last inserted id 
     $result = mysql_query("SELECT * FROM users WHERE uid = $uid"); 
     // return user details 
     return mysql_fetch_array($result); 
    } else { 
     return false; //unsuccessful store 
    } 
    } 
    else { 
     //not a valid email 
     return false; 
    } 

} 
+0

錯誤....在那之後有一個分號if if語句。 – Neal

+0

@Neal沒看見。固定 – dInGd0nG

+0

你應該告訴OP你修好了什麼。 – Neal