0

「パスワードを送信」タイプの機能に取り組んでいますが、SQLが不良であるか、codeigniterが不良です。フォームは正常に検証され、モデル内の関数が呼び出されますが、何も返されません。ユーザーアカウントと管理者アカウントを2つのテーブルに分けたため、送信されたメールアドレスの2つのテーブルを確認する必要があります。

コントローラーコード:

 public function send() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('email', 'Email', 'required|valid_email|trim');
    $this->form_validation->set_error_delimiters('<div class="alert alert-error">', '</div><br />');

    if ($this->form_validation->run()) {
        // Check For A Matching Email
        $this->load->model('signin_model');
        if ($this->signin_model('email_verify')) {

            // There Was A Match
            echo "THERE WAS A MATCH";
        } else {

            // No Match
            echo "NO MATCH";
        }

    } else {

        // Form Did Not Validate
        $this->load->view('signin/forgot');
    }
}

モデルコード:

public function email_verify() {
    $sql = "SELECT * FROM admin, staff WHERE staff_email = ? OR admin_email = ?";
    $email = $this->input->post('email');
    $query = $this->db->query($sql, $email, $email);

    if($query->num_rows() == 1) {
        return true;
    } else {
        return false;
    }
}

エラー:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

SELECT * FROM admin, staff WHERE staff_email = 'dsfsdf@test.com' OR admin_email = 

更新:私が現在使用している固定クエリは次のとおりです。

$sql = "SELECT admin_id, first_name FROM admin WHERE admin_email = ? UNION SELECT staff_id, first_name FROM staff WHERE staff_email = ?";
4

2 に答える 2

1
 $query = $this->db->query($sql, array($email, $email));

それを試してみてください。SQLエラーを修正する必要があります

于 2012-11-16T15:59:11.873 に答える
1

$this->signin_model関数ではありません。それはオブジェクトです。モデル関数を呼び出すには、オブジェクトのプロパティとして関数を呼び出します。

$this->signin_model->email_verify()

編集:2番目のパラメータ$this->db->queryは配列である必要があります。

$query = $this->db->query($sql, array($email, $email));

編集2:2つのテーブルの間にリンクがない場合、aJOINは役に立ちません。UNION代わりに試すことができます。

$sql = "SELECT * FROM staff WHERE staff_email = ? ".
    "UNION ALL SELECT * FROM admin WHERE admin_email = ?";
于 2012-11-16T15:45:57.053 に答える