Intereting Posts
Использование PHP для генерации таблицы HTML со статическим подсчетом количества данных MySQL Webservice / API, чтобы захватить скриншот другого сайта? (известные решения слишком медленные) Можно ли сделать мои образы, вызванные из базы данных, ссылкой на другую страницу? Изучение классов PHP, застрявших на __contruct (); Можно ли включить и вызвать функцию JavaScript из PHP-скрипта? И как? Symfony 2: INNER JOIN на не связанной таблице с построителем запросов доктрины php mysql сортировать по дате (новейший) как изменить значение по умолчанию, отправленное по почте: адрес в php mail () Проблема с Imagick, а также с phmagick: делегат Postscript не удалось / Нет такого файла или каталога php warning redirect Возвращение первого предложения из переменной в PHP Наследование класса PHP для начинающих Вызов API телеграмм для создания бота-загрузчика Как получить флаги imap? net :: ERR_EMPTY_RESPONSE, когда сообщение с ajax

Неопределенная константа класса 'MYSQL_ATTR_INIT_COMMAND' с pdo

$db = new PDO('mysql:dbname=xnews;host=localhost;port=' . $LOCAL_DB_PORT, $LOCAL_DB_USER, $LOCAL_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'") ); 

доклады:

Неопределенная константа класса 'MYSQL_ATTR_INIT_COMMAND'

Это переименовано?

У меня была такая же ошибка (с PHP 5.2.6), и все, что мне нужно было сделать, это включить MySQL-специфический драйвер PDO :

TL; DR

В вашем файле php.ini вы должны иметь следующую строку (без объявления):

  • extension=php_pdo_mysql.dll в Windows
  • extension=php_pdo_mysql.so на Linux / Mac

Более длительное объяснение:

  1. открыть php.ini в текстовом редакторе

    • например, его путь по умолчанию в Windows: C:\Program Files (x86)\PHP\v5.X\php.ini (замените v5.x с установленной вами версией) или C:\Windows\php.ini и т. д.
    • или в Linux: /etc/php5/apache2/php.ini (например, это путь к Ubuntu) или /etc/php5/cli/php.ini , /etc/php5/cgi/php.ini и т. д.
    • или вы можете узнать, где это выглядит так :
      • php --ini | find /i "Loaded" php --ini | find /i "Loaded" в командной строке Windows ИЛИ
      • php --ini | grep "Loaded" php --ini | grep "Loaded" в терминале Linux / Mac
      • используя phpinfo() , и ищет строку «Загруженный файл конфигурации»,
  2. и удалите точку с запятой с начала следующей строки (чтобы раскомментировать ее):

    • ;extension=php_pdo_mysql.dll в Windows
      • OR ;extension=php_pdo_mysql.so на Linux / Mac
    • конечно, если этой строки не существует, вы должны вставить ее
    • поэтому в ожидаемой строке будет выглядеть так: php.ini :
      • extension=php_pdo_mysql.dll в Windows
      • ИЛИ extension=php_pdo_mysql.so на Linux / Mac
  3. Возможно, вам придется перезагрузить веб-сервер.

Это решило мою проблему.

Я получил ту же ошибку, на debian6, когда я еще не установил php5-mysql .

Поэтому я установил его, а затем перезапустил apache2

 apt-get install php5-mysql /etc/init.d/apache2 restart 

Затем ошибка исчезла.

Если у вас такая же ошибка в Ubuntu, а не:

 /etc/init.d/apache2 restart 

Тип:

 service apache2 restart 

Похоже, что он доступен только с помощью драйвера mysqlnd .
Попробуйте заменить его на целое число, которое оно представляет; 1002, если я не ошибаюсь.

Для Centos мне не хватало библиотеки php-mysql:

 yum install php-mysql service httpd restart 

Нет необходимости включать какое-либо расширение в php.ini, оно загружается по умолчанию.

Я просто попытался с PHP 5.2, и эта константа, похоже, существует:

 var_dump(PDO::MYSQL_ATTR_INIT_COMMAND); 

Дает мне :

 int 1002 

Но похоже, что в PHP 5.3 есть ошибка, которая заставляет эту константу больше не существовать – или, по крайней мере, не при использовании драйвера mysqlnd (и это тот, который настроен по умолчанию)

Я предполагаю, что временное решение, предложенное в этом отчете об ошибке , может состоять в том, чтобы напрямую использовать целочисленное значение 1002 , а не contant …

Но обратите внимание, что вы должны вернуться к использованию константы как можно скорее, так как это упрощает понимание кода.

Вы можете попробовать заменить его на 1002 или выполнить запрос инициализации сразу после открытия соединения.

Для меня не хватало MySQL PDO, я перекомпилировал свой PHP с параметром --with-pdo-mysql , установил его и перезапустил apache, и все это работало

Я получил эту ошибку этим утром, я только что сделал новую установку Fedora 14 и пытался вернуть мои местные проекты в Интернете. Мне не хватало php-mysql, я установил его через yum, и ошибка теперь исчезла.

Использование значения int 1002 похоже, работает для PHP 5.3.0:

 public static function createDB() { $dbHost="localhost"; $dbName="project"; $dbUser="admin"; $dbPassword="whatever"; $dbOptions=array(1002 => 'SET NAMES utf8',); return new DB($dbHost, $dbName, $dbUser, $dbPassword,$dbOptions); } function createConnexion() { return new PDO( "mysql:host=$this->dbHost;dbname=$this->dbName", $this->dbUser, $this->dbPassword, $this->dbOptions); } 

Это связано с ошибкой PHP 5.3.0 в Windows, где MYSQL_ATTR_INIT_COMMAND недоступен. Отчет об ошибке PHP:

http://bugs.php.net/bug.php?id=47224

Если вы это испытываете, обновите свой продукт WAMP до версии, использующей PHP 5.3.1 или более позднюю версию.