-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();
}
}
}
?>
、私はここに少し新たなんだ...
$ numRowsに-1の値を常に割り当てています –
あなたの 'users'テーブルの' username'カラムに 'UNIQUE'制約を追加するほうがよいでしょう。挿入する前に 'SELECT'を使用すると、重複するレコードが挿入される小さなウィンドウが残されます。これにより深刻なセキュリティ問題が発生する可能性があります。 – Chris
@ JohnCondeだから、= = ==に変更して、現在はユーザーが存在しない場合でも常にデフォルトになります。 – Doncho