0

次のPHP関数があります。

public function signup() {
        $mysql = mysqli_connect(ホスト名、ユーザー名、パスワード、データベース);
        if (mysqli_connect_errno($mysql)) {
            $this->viewModel->set("pageTitle", "Signup");
            $this->viewModel->set("メッセージ", "サーバーへの接続中にエラーが発生しました。");
            $this->viewModel を返します。
        }
        if ($result = $mysql->query("SELECT id FROM mailinglist WHERE email='" . $this->email . "';")) {
            if ($result->num_rows == 0) {
                $mysql->query("INSERT INTO メーリングリスト (電子メール) 値 ('" . $this->email . "');");
                $this->viewModel->set("message", "すばらしい! サインアップしていただきありがとうございます " . $this->email . ".");
            } そうしないと {
                $this->viewModel->set("message", "あなたはすでにアップデートにサインアップしています!");
            }
        } そうしないと {
            $this->viewModel->set("メッセージ", "メーリング リストへの追加中にエラーが発生しました。");
        }
        $this->viewModel->set("pageTitle", "Signup");
        $this->viewModel を返します。
    }

これは正常に実行され、必要なものを正確に返しますが、クエリに mysqli_real_escape_string() を使用しようとすると機能しません。つまり、次のコード

public function signup() {
        $mysql = mysqli_connect(ホスト名、ユーザー名、パスワード、データベース);
        if (mysqli_connect_errno($mysql)) {
            $this->viewModel->set("pageTitle", "Signup");
            $this->viewModel->set("メッセージ", "サーバーへの接続中にエラーが発生しました。");
            $this->viewModel を返します。
        }
        $query = $mysql->real_escape_string("SELECT id FROM mailinglist WHERE email='" . $this->email . "';");
        if ($result = $mysql->query($query)) {
            if ($result->num_rows == 0) {
                $query = $mysql->real_escape_string("INSERT INTO メーリングリスト (電子メール) 値 ('" . $this->email . "');");
                $mysql->クエリ($クエリ);
                $this->viewModel->set("message", "すばらしい! サインアップしていただきありがとうございます " . $this->email . ".");
            } そうしないと {
                $this->viewModel->set("message", "あなたはすでにアップデートにサインアップしています!");
            }
        } そうしないと {
            $this->viewModel->set("メッセージ", "メーリング リストへの追加中にエラーが発生しました。");
        }
        $this->viewModel->set("pageTitle", "Signup");
        $this->viewModel を返します。
    }

動作しません。これは接続の問題ではなく、 $mysql->real_escape_string() の代わりに mysqli_real_escape_string() を使用しようとしましたが、どちらも機能しません。このコードの何が問題なのか誰にもわかりますか?

4

2 に答える 2