Долго бился с такой вот проблемкой. Вроде бы запрос на PDO абсолютно правильный, проверил много раз, а данные в базу не добавляются и ошибок нет. Использовал разные варианты оформления запроса. В моем случае надо было сделать INSERT данных в таблицу. Скрипт отрабатывает, никаких ошибок не выдает, но запись в таблице не появляется. Мистика. Так в чем же дело??Для начала обратился к всемогущему гуглу за советом. Там конечно предлагались мудреные способы написания своего велосипеда по отлову финальной строки запроса, а также первым делом предлагалось включить специальный режим отображения ошибок: PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION. Т.е наше подключение должно было выглядеть следующим образом:
$host = 'ххх.домен-хостера.ru'; $dbname = 'база-данных'; $user = 'юзер'; $password = 'пароль'; try { #MySQL с PDO_MYSQL $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo $e->getMessage(); }
Но проблема осталась так как эта строчка у меня была прописана изначально, и никаких ошибок я не получал. И вот наконец то я заметил камень в глазу. Я наконец то обратил внимание на переменные подключения к базе!
Е-мое. Да мой скрипт однако отправлял запросы к реальному работающему серверу у хостера! И само собой все мои тестовые бла-бла-бла успешно добавлялись в базу!
Дело в том что некоторые хостеры используют в качестве хоста localhost, а некоторые, как и было в моем случае определенный url адрес. У себя на локальной тестовой машине я завел все параметры, как и хостера, для облегчения последующей заливки базы к хостеру или наоборот для бекапа. Вся разница была только в строчке $host. Само собой, как только я у себя в конфиге поменял $host = ‘ххх.домен-хостера.ru’ на $host = ‘localhost то все заработало.
И такое бывает однако.