Почему не выполняется SQL запрос?

Здравствуйте! Подскажите, почему не выполняется SQL-запрос к базе данных
$connect = new PDO("mysql:host=127.0.0.1;dbname=***", "***", "***");
$prep = $connect->prepare('INSERT  INTO vhosts (mainname,email,charset,index) VALUES (:mainname, :email, :charset, :index)' );
        $prep->execute(array(":mainname" => $mainname , ":email"  => $email, ":charset"  => $charset, ":index" => $index ));

Никаких ошибок не вылезает, но новой строки в БД всё равно не вижу.
В начале файла прописал показ всех ошибок - ini_set('error_reporting', E_ALL);, всё равно ошибок нет, код выполняется.
Вот работающий INSERT-запрос (выполняю через phpmyadmin)
INSERT INTO `vhosts` (`unid`, `mainname`, `email`, `charset`, `index`) VALUES (NULL, 'yandex.ru', 'admin@site.ru', 'UTF-8', 'index.php')
  • Вопрос задан
  • 1355 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
О том, почему не выполняется запрос, ты должен спрашивать не у дяди с улицы, а у своей БД. Только она это знает точно.
Дядя с улицы может только подсказать, как правильно спросить у базы данных.
Поэтому меняем код подключения на
$connect = new PDO("mysql:host=127.0.0.1;dbname=***", "***", "***",[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

И закономерно получаем ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index)

В которой черным по белому написано что слово index базе данных не нравится.
идем в список зарезервированных слов и убеждаемся что так оно и есть

И вот дальше начинаем удивляться - почему в phpmyadmin аффтар употребляет обратные апострофы, а в пхп - нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы