1

PHP と MySQL で重複チェックを作成しようとしていますが、さまざまな種類を試しました。それにもかかわらず、ユーザー名が既に存在する場合、私のコードは表示されません。私の知る限り、これは機能的な重複チェックの(多くの)正しい式であるはずですか?

  $username = "heihei";
  $checkquery = mysqli_query($con,"SELECT * FROM users 
  WHERE username='$username'") or die(mysqli_error());  
  if (mysqli_num_rows($checkquery)) {
     echo ">0" ; 
  }else {
     echo "0" ; 
 }

ユーザーテーブルは次のようになります。

ID    USERNAME
1     heihei
2     neinei

$usernameとして定義するとheihei、結果は になり0ます。

と定義$usernameしても結果は同じですsomething

ユーザーがまだ存在しないことが表示されます。

ここで何が問題なのですか?

4

3 に答える 3

1

これを行う:

交換

if (mysqli_num_rows($checkquery)) {

と:

if (mysqli_num_rows($checkquery) > 0) {

echo ">0" ;と置き換えecho "Exists";ます-それは私が成功して使用するものです。


これも試してください:

$results = "SELECT username FROM users WHERE username = '$username'";

$checkquery = mysqli_query($con,$results) or die(mysqli_error());

  if (mysqli_num_rows($checkquery) > 0) {

私のスクリプトでそれを行う方法は次のとおりです。

$mysqli = new mysqli("xxx","xxx", "xxx", "xxx");
$username = mysqli_real_escape_string($mysqli,$_POST['username']);
$username = $_POST['username'];
$sql = "SELECT username FROM users WHERE username  = '$username'";

   $results = mysqli_query($mysqli,$sql) or die(mysqli_error());
   if (mysqli_num_rows($results) > 0)

{

die("Sorry, that username is already taken.");

}
于 2013-10-28T19:28:40.710 に答える
1

また、別のクエリを使用することもできます:

SELECT COUNT(*) FROM users WHERE `username` = '$username'

そして結果を見る

于 2013-10-28T19:31:27.983 に答える
0
if(mysqli_num_rows(mysqli_query($checkquery))== 0){
    echo "no duplicates";
}
于 2013-10-28T19:55:47.090 に答える