Почему не работает insert в PDO на php?
Ответ
Первым делом укажем режим показа ошибок в виде исключений:
1 2 3 4 5 |
$db=new PDO('mysql:host=localhost;dbname=mybase;charset=utf8', 'root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); |
Обычно появляющееся описание ошибки многое проясняет.
Далее стоит проверить кодировку. В коде, приведенном выше, указана кодировка utf-8. Однако, в версиях php, более ранних, чем 5.3.6, такое задание игнорируется. Потому стоит после создания $db использовать код
1 2 3 |
$db->exec("set names utf8"); |
Еще одна причина: ошибка в самом запросе insert. Как вы думаете, в чем проблема в следующем коде?
1 2 3 |
$st=$db->prepare('INSERT INTO groups (group) VALUES (?)'); |
Оказывается, слово group является ключевым в запросах языка SQL, то есть оно воспринимается совсем не как название столбца. Замена group на groups.group решает проблему.