0

我收到此错误:

错误号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“@gmail.com”附近使用正确的语法

这是代码:

$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 回答