2016-09-21 8 views
0

申し訳ありません。単純なSQL & PHPを使用してこの小さなアカウントチェックを行いましたが、アカウントが存在する場合はtrueの代わりにfalseを返すようです。SELECTが間違った情報を返す

public function ifExists($name) { 
    $handler = new sql(); 
    $sql = $handler->connect(); 
    $sql->real_escape_string($name); 

    $result = $sql->query("SELECT ime FROM users WHERE ime='".$name."'"); 

    if($result == false) { 
     if($result->num_rows != 0) { 
      $echo = 'account exists'; 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
} 

そして今、ここにはチェック

if($result->num_rows != 0) { 
    $echo = 'account exists'; 
    return true; 
} 
else { 
    return false; 
} 

であるSQLでIME = 'TOMA'

+0

可能なすべてのコードパスの戻り値が関数にありません。 – paddy

+0

ああ、私はそれをfalseに戻すように設定しなければなりません。私は(デフォルトのリターンとして)仮定する。ありがとうございます。 –

+1

クエリで文字列補間を使用すると、SQLインジェクション攻撃につながる可能性があり、悪い習慣です。準備されたステートメントを見てください:https://php.net/manual/en/mysqli.prepare.php – RegularlyScheduledProgramming

答えて

1
if($result == false) 

query()が唯一の構文エラーにfalseを返すと行があります。また、これは後ろ向きです。 falseでない場合にのみ、コードを実行する必要があります。ブロックifがブロックされ、正常に動作するはずです

+0

あなたは数秒でそれを打ちました – RiggsFolly

関連する問題