2

この正確な問題について他の多くのスレッドを読みましたが、何らかの理由で問題を解決できません。本当に助けが必要です。

if (!$username||!$password||!$email)
    echo "Please fill out all fields"; 
 else
 {
    //encrypt password
    $password = md5($password);

    //check if username already taken
    $check = mysql_query("SELECT * FROM Test WHERE username = '$username'");
    if (mysql_num_rows($check)>=1)
       echo "Username already taken";

    else

と言いました

警告: mysql_num_rows() は、パラメーター 1 がリソースであり、/Users..... で指定された文字列であると想定しています。

if (mysql_num_rows($check)>=1)この行..しかし、phpmyadminで実行すると、結果が返されます。

助けてください

4

5 に答える 5

3

これを好きにしてみてください:

$query = "SELECT username FROM $this->table WHERE username='$sUser'";
$result = mysql_query($query);  
$num_rows = mysql_num_rows($result); 
于 2013-09-12T06:59:54.430 に答える
2

変化する:

$check = mysql_query("SELECT * FROM Test WHERE username = '$username'");

$check = mysql_query("SELECT * FROM Test WHERE username = '$username'") or die(mysql_error());

また、クエリで発生する可能性のあるエラーが表示されます。

また、mysql 関数の代わりに PDO または Mysqli を使用することを強くお勧めします。これらは非推奨であり、将来の php バージョンでは削除される予定です。

于 2013-09-12T06:57:42.213 に答える
1

OK、誰かが同じ問題を抱えている場合は、次のように、if() ステートメント内に変数を 2 回追加するだけです。

$Query = mysql_query($sql); 
IF($Query && mysql_num_rows($Query)> 0){ // continue with the code}

これで問題が解決するはずです。

于 2016-01-21T10:12:26.340 に答える
1

まず、データベースへの接続が正しく確立されていることを確認します。

クエリを直接記述する代わりに

$check = mysql_query("SELECT * FROM Test WHERE username = '$username'");

クエリを次のように変数に格納します

$query = "SELECT * FROM Test WHERE username = '".$username."'";

そしてそれを次のように実行します

$check = mysql_query($query);

それでも問題が解決しない場合は、

クエリを次のようにエコーします

echo $query;

クエリを phpmyadmin で直接実行すると、問題を見つけることができます。

これが役立つことを願っています。

于 2013-09-12T07:02:48.397 に答える
1

このように試すことができます

$sql= "SELECT * FROM Test WHERE username = '".$username."'";
$check = mysql_query($sql);

あなたの$checkは、このユーザー名を持つユーザーではない null を返し、null をパラメーターmysql_num_rows()関数にすることはできないと思います。

if($check)
{
    echo "Username already taken";
}
else
{
  echo "Username available";
  // do other actions
}
于 2013-09-12T07:19:19.603 に答える