0

変数に問題があります。$variableを使用する前に常に初期化する必要があるようです。これは非常に苛立たしいことです。$ username_check = mysql_num_rows($ sql_username_check); ここでは、通知:未定義の変数:c://のusername_check通知:未定義の変数:c://のemail_checkと表示されます。db内の重複データをチェックしています。残念ながら同じデータを追加しています:(誰かがこれを手伝ってくれますか?

// Database duplicate Fields Check
        $sql_username_check = mysql_query("SELECT user_id FROM users WHERE user_username='$username' LIMIT 1");
        $sql_email_check = mysql_query("SELECT user_id FROM users WHERE user_email='$email' LIMIT 1");
        if($sql_username_check != "")
            if(isset($username_check))
                $username_check= mysql_num_rows($sql_username_check);
        if($sql_email_check != "")
            if(isset($email_check))
                $email_check = mysql_num_rows($sql_email_check); 
        if ($username_check > 0){ 
            $errorMsg = "<u>ERROR:</u><br />Your User Name is already in use inside of our system. Please try another.";
        } 
        else if ($email_check > 0){ 
            $errorMsg = "<u>ERROR:</u><br />Your Email address is already in use inside our system. Please try another.";
        } 
4

4 に答える 4

0
if(isset($username_check))

これは$username_check割り当てられる前に使用されるため、通知が表示されます。

次のようなコードを試してください:

$sql_username_check = mysql_query("SELECT user_id FROM users WHERE user_username='$username' LIMIT 1");
        $sql_email_check = mysql_query("SELECT user_id FROM users WHERE user_email='$email' LIMIT 1");
        if($sql_username_check != "")
            $username_check= mysql_num_rows($sql_username_check);
        if($sql_email_check != "")
            $email_check = mysql_num_rows($sql_email_check); 
        if ($username_check > 0){ 
            $errorMsg = "<u>ERROR:</u><br />Your User Name is already in use inside of our system. Please try another.";
        } 
        else if ($email_check > 0){ 
            $errorMsg = "<u>ERROR:</u><br />Your Email address is already in use inside our system. Please try another.";
        } 
于 2013-02-18T19:48:21.367 に答える
0

本当に奇妙なコードがいくつかありますが、これを試すことができます:

    $sql_username_check = mysql_query("SELECT user_id FROM users WHERE user_username='$username' LIMIT 1");
    $sql_email_check = mysql_query("SELECT user_id FROM users WHERE user_email='$email' LIMIT 1");

    if($sql_username_check)
      $username_check= mysql_num_rows($sql_username_check);

    if($sql_email_check)
      $email_check = mysql_num_rows($sql_email_check); 

    if (isset($username_check) && $username_check > 0){ 
        $errorMsg = "<u>ERROR:</u><br />Your User Name is already in use inside of our system. Please try another.";
    } else if (isset($email_check) && $email_check > 0){ 
        $errorMsg = "<u>ERROR:</u><br />Your Email address is already in use inside our system. Please try another.";
    } 
于 2013-02-18T19:43:39.913 に答える
0

問題はここから始まるようです:

$sql_username_check = mysql_query("SELECT user_id FROM users WHERE user_username='$username' LIMIT 1");
$sql_email_check = mysql_query("SELECT user_id FROM users WHERE user_email='$email' LIMIT 1");

関数呼び出しは文字列を返さないため、以下の比較は、あなたが思っていることを行っていません。エラーの原因となっている行は、おそらく次のとおりです。

if ($username_check > 0){ 
        $errorMsg = "<u>ERROR:</u><br />Your User Name is already in use inside of our system. Please try another.";
    } 
    else if ($email_check > 0){ 
        $errorMsg = "<u>ERROR:</u><br />Your Email address is already in use inside our system. Please try another.";
    }

あなたの例から私が読んだことから、あなたがそれらの通知$username_check$email_check受け取らないようにここに設定される方法は考えられません)。

本当に必要なことは、データベースのエラー処理を含め、データベースからの結果セットを操作する方法を理解することです。

mysql_*それについて読んでいる間、関数の使用法は非推奨であるため、関数の使用法をダンプし、PHP で使用するのに最も人気のあるデータベース ライブラリの使用法mysqliまたは使用法を学習する必要があります。PDO

于 2013-02-18T19:46:47.960 に答える
-1

PHP でエラー報告の設定を調整する必要があります。たとえば、次のようにします。

error_reporting (E_ALL & ~E_NOTICE & ~E_STRICT);
于 2013-02-18T19:41:39.313 に答える