0

この機能を作りました。実際、これは私がこれまでに作成した最初の関数の 1 つです。ただし、実行することはできません。$con が定義されています。貼り付けていません。実際、すべての変数が定義されています。

function cleanse() {
    $cleansesql = "Select * FROM rated_teams WHERE server='$server' AND name='$myteam' AND opposition='$opposer'";
    $result = mysqli_query($con, $cleansesql)
    or die('A error occured: '.mysqli_error());
    while (($row = mysqli_fetch_array($result))) {
        if ($row['server'] == $server && $row['name'] == $myteam && $row['opposition'] == $opposer && $row['myscore'] == $myscore && $row['oscore'] == $oscore && $row['location'] == $location) {
            echo "There is a Match.";
        } else {
            echo "There are no matches";
        }
    }
}

そして、これが私がそれを呼んでいる方法です。

if ($solo == "solo" || $solo == "Solo" || $solo == "SOLO") {
    echo $solo." <br />";
    if (!empty($myscore)) {
        echo $myscore." <br />";
        if (!empty($oscore)) {
            echo $oscore." <br />";
            if (!empty($location)) {
                echo $location." <br />";
                cleanse();
            }
        }
    }
}

たぶん私はそれを正しく呼んでいません。私よりもよく知っている誰かが助けてくれる必要があるだけです...それはあなたのほとんどです。

4

3 に答える 3

1

(この関数を呼び出す前にデータベースへの接続を作成した場合) などの情報をcleanse関数に渡し、それを処理できるようにします。$con$server$myteam$opposer

したがって、関数の定義は次のようになります。

function cleanse($con, $server, $myteam, $opposer) { ... }

そして、あなたはそれを次のように呼びます:

cleanse($con, $server, $myteam, $opposer);
于 2013-08-03T23:21:12.700 に答える
1

$conMySQL への接続である変数を使用していることに注意してください。
クエリの前に MySQL への接続を作成していません。
mysqli の使用に関する基本的な PHP マニュアルを読むことをお勧めします。
次のことを覚えておいてください。

  1. サーバーに接続する必要があります
  2. 作業対象のDBを選択する必要があります
  3. その DB に対してクエリを実行します。

2は必須ではありません。

于 2013-08-03T23:16:41.750 に答える
0

カンパリは正しいです-それがあなたの機能が機能していない理由ですが、

コードを複製しています。テスト条件とSQLの出力が一致するかどうかをチェックする必要はありません。これはデータベースが行うためです。あなたのSQLが言うことは、「すべての基準に一致するすべての結果を取得する」ということであり、関数は「すべての結果が私の基準に一致することを確認する」と言います。これは遅く、必要ありません。SQL を適切に記述すれば、PHP でさらにデータをチェックしたりマージしたりする必要はほとんどありません。

function cleanse($connection, $server, $myteam, $opposer)
    {
    $cleansesql="Select * FROM rated_teams WHERE server=? AND name=? AND opposition=?";
    $stmnt=$connection->prepare($cleansesql);
    $stmnt->bind_param("sss",$server,$myteam,$opposer);
    $stmnt->execute();
    $stmnt->store_result();
    return $stmnt->num_rows;
    }

私が作成したこの (テストされていない) 関数は、変数のすべての条件に一致するrated_teams の行数を返す必要があります。また、準備済みステートメントを使用するため、ユーザーが入力したデータを安全に入力できるため、SQL インジェクションの影響を受けません。

于 2013-08-03T23:34:29.407 に答える