PHP如何编码(转义)@,用于电子邮件验证?

时间:2013-03-18 13:17:48

标签: php escaping

我收到了这个错误:

  

错误号码: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;
    }

1 个答案:

答案 0 :(得分: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()转义您的查询。它可以保护您免受注射。