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
4

6 に答える 6

3
if((filter_var($email, FILTER_VALIDATE_EMAIL)) 
      && preg_match('/@.+\./', $email)); { //<<<REMOVE THE ;
于 2012-05-23T15:12:38.253 に答える
2

あなたのelseステートメントは、中括弧に関して間違った位置にあります。}2番目の前にsの1つを移動すると、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とパラメーター化されたクエリの使用方法を学びます。

于 2012-05-23T15:17:45.960 に答える
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;
}    
于 2012-05-23T15:13:24.377 に答える
1

この最後に小さなセミコロンが表示されますか?if((filter_var($email, FILTER_VALIDATE_EMAIL)) && preg_match('/@.+\./', $email));

于 2012-05-23T15:14:10.453 に答える
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;
    }

}
于 2012-05-23T15:15:36.107 に答える
-2

なぜelse {}最後に2つのブロックがあるのですか...?あなたは1つだけを持つことができます。

于 2012-05-23T15:13:19.523 に答える