-2

インターネットで検索してコードをいじってみましたが、このエラー メッセージが表示される理由がわかりません。これが私のコードからの抜粋です:

    } else {
        if (!empty($errors) && nexus_error($nexus)==false) {
            $message = "There were" . count($errors) . " errors in the form.";
        } if (!empty($errors) && nexus_error($nexus)) {
            $message = "There were" . count($errors) . " errors in the form.";
            $message .= "A user with the username" . $nexus . " already exists in the database."; 
        } if (empty($errors) && nexus_error($nexus)) { //***this line causes the error
            $message = "A user with the username" . $nexus . " already exists in the database."; 
        }
    }

ちなみに、関数 nexus_error は次のように定義されています。

function nexus_error($sel_nexus) {
    global $connection;
    $query = "SELECT * FROM person WHERE nexus={$sel_nexus}";
    $result_set = mysql_query($query, $connection);
    confirm_query($result_set);
    if (count(mysql_fetch_array($result_set)) != 0) {
        return true;    // bad
    } else {
        return false;  
    }
}

どんな助けでも素晴らしいでしょう。御時間ありがとうございます :)

4

2 に答える 2

2
if (count(mysql_fetch_array($result_set)) != 0)

count()関数が値を返すことはできません。前に変数に格納する必要があります。

于 2012-05-22T15:12:17.620 に答える
0

サミーが言ったように、問題の行はif (count(mysql_fetch_array($result_set)) != 0) {

返された結果の量を数える適切な方法は mysql_num_rows()、数える代わりであり、あなたの行は単にこれである可能性があります:

if (mysql_num_rows($result_set) != 0) {

また、コードが最後のステートメント(2つの不要なクエリ)にフィルターされた場合、同じ変数で3回呼び出されるnexus_error($nexus) 可能性があるという点で、コードは現在非効率的です。次のようにリファクタリングを検討してください。if

$nexusError = nexus_error($nexus);
 } else {
    if (!empty($errors) && $nexusError ==false) {
        $message = "There were" . count($errors) . " errors in the form.";
    } if (!empty($errors) && $nexusError) {
        $message = "There were" . count($errors) . " errors in the form.";
        $message .= "A user with the username" . $nexus . " already exists in the database."; 
    } if (empty($errors) && $nexusError) { //***this line causes the error
        $message = "A user with the username" . $nexus . " already exists in the database."; 
    }
}
于 2012-05-22T15:15:56.853 に答える