Подготовленный оператор PDO Ошибка 1064

Я получаю эту ошибку, пытаясь вставить данные в мою таблицу.

Массив ([0] => 42000 [1] => 1064 [2] => У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'username,password,firstname,lastname,email,emailcode``) ЗНАЧЕНИЯ ('' в строке 1)

Мой код выглядит так. $reg_data — это массив, содержащий данные из $_POST.

        $fields = '`' . implode('`, `',array_keys($reg_data)) . '`';
        $data = '\'' . implode('\', \'', $reg_data) . '\'';


        $prep = $this->db->prepare('INSERT INTO `users` (`'.$fields.'`) VALUES (?)');

        $prep->bindParam(1, $data);

        $prep->execute();

        print_r($prep->errorInfo());

person macknes    schedule 12.12.2013    source источник


Ответы (1)


Как вы можете видеть, ошибка ясно указывает на использование двойного кода электронной почты с обратными тиками``

После того, как вы добавили backtiks в имплоде, вы снова добавляете в запрос на вставку ('.$fields.')

изменять

 $fields = '`' . implode('`, `',array_keys($reg_data)) . '`';

to

 $fields =  implode('`, `',array_keys($reg_data)) ;

Или просто используйте его без обратной связи, как вы уже добавили, используя implode

$prep = $this->db->prepare('INSERT INTO `users` ('.$fields.') VALUES (?)');
person M Khalid Junaid    schedule 12.12.2013