2016-09-06 14 views
-3

私のサインアップページのデータベース内にすでにユーザ名が存在するかどうかをチェックしたいのですが、これを行うには入力したユーザ名でselectクエリを実行し、戻ってください。しかし、num_rowsは常に= -1です。使用しているテストのユーザー名はデータベースに2回あります。入力すると、elseに移動して「このユーザーは既に存在しています」というメッセージが表示されます。私はmysqliにも新しかったので、もしあなたがそれで何らかの誤りを見たなら、あなたのフィードバックは非常に高く評価されるでしょう。OO MYSQLI num_rows always = -1

私のPHPはここにある:

フォーマットのため申し訳ありません
  <?php 
      if(isset($_POST['submit'])){ 
        $connection = new mysqli("localhost","username","password","DB"); 
        if($connection->connect_errno){ 
          echo "Failed to connecto MYSQL: (" . $connection->connect_errno . ") " . $connection-> connect_error; 
        } 
        else{ 
          $username = $_POST['username']; 
          $password = $_POST['password']; 
          $password = password_hash($password, PASSWORD_DEFAULT); 
          $check_exist = $connection->prepare("SELECT username FROM users WHERE username = ?"); 
          $check_exist->bind_param('s', $username); 
          $username = $connection->real_escape_string($username); 
          $check_exist->execute(); 
          $check_exist->store_result(); 
          $numRows = $check_exist->num_rows(); 
          if($numRows = -1){ 
            echo "$numRows"; 
            $enter_user = $connection->prepare("INSERT INTO users (username, password) VALUES (?,?)"); 
            $enter_user->bind_param('ss', $username, $password); 
            $enter_user->execute(); 
            $enter_user->store_result(); 
            $check_exist->close(); 
            $enter_user->close(); 
            $connection->close(); 
          } 
          else{ 
            echo "This user already exists."; 
            $check_exist->close(); 
            $connection->close(); 
          } 
        } 
      } 
      ?> 

、私はここに少し新たなんだ...

+3

$ numRowsに-1の値を常に割り当てています –

+1

あなたの 'users'テーブルの' username'カラムに 'UNIQUE'制約を追加するほうがよいでしょう。挿入する前に 'SELECT'を使用すると、重複するレコードが挿入される小さなウィンドウが残されます。これにより深刻なセキュリティ問題が発生する可能性があります。 – Chris

+0

@ JohnCondeだから、= = ==に変更して、現在はユーザーが存在しない場合でも常にデフォルトになります。 – Doncho

答えて

0

ラインの "if($ numRowsの数= -1){" あなたの意味"if($ numRows == -1)"をコーディングしたい場合、$ numRowsの値を-1に設定します。

"if(!$ numRows){"を使用できます。