0

次のエラーが表示されます。

エラー番号: 1064 SQL 構文にエラーがあります。1行目の「@gmail.com」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

コードは次のとおりです。

$email = $this->input->post('email');

                $checkEmail = $this->crud_model->retrieve_where('employee', 'email', 'email', $email);

crud_model:

function retrieve_where($table, $table_id, $table_name, $value) {
        $table = $this->db->query('Select * FROM ' . $table . ' Where ' . $table_id . ' = ' . $value);
        $records = array();
        foreach ($table->result() as $row) {
            $records[] = $row->$table_name;
        }
        return $records;
    }
4

1 に答える 1

2

実行しようとするクエリは次のとおりです。

SELECT * FROM Email WHERE Email = email@email.com

この場合、電子メールは文字列であり、文字列は引用符で囲む必要があります。

function retrieve_where($table, $table_id, $table_name, $value) {
    $table = $this->db->query("Select * FROM " . mysql_real_escape_string($table) . " Where " . mysql_real_escape_string($table_id) . " = '" . mysql_real_escape_string($value) ."'");
    $records = array();
    foreach ($table->result() as $row) {
        $records[] = $row->$table_name;
    }
    return $records;
}

でクエリをエスケープすることを忘れないでくださいmysql_real_escape_string()。それは注射からあなたを守ります。

于 2013-03-18T13:26:07.720 に答える