У меня есть файл конфигурации, который подключается к удаленной базе данных, однако я продолжаю получать сообщение об ошибке, которое я не знаю, как исправить. В более ранних версиях он должен был быть ошибкой, но я предположил, что он был бы исправлен на 5.5.3.
<?php error_reporting(E_ALL); ini_set('display_errors', 'on'); $host = "localhost"; $dbname = "registration"; $username = "databaseEditor"; $password = "yolo10"; // 1002 = MYSQL_ATTR_INIT_COMMAND $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username$ } catch(PDOException $ex) { die("Failed to connect to the database: " . $ex->getMessage()); } $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); header('Content-Type: text/html; charset=utf-8'); echo "File works"; ?>
Я продолжаю получать ошибку "Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'"
. Я попытался использовать 1002 вместо «MYSQL_ATTR_INIT_COMMAND», но потом я получил ошибку "syntax error, unexpected '1002' (T_LNUMBER)"
и я также установил новое расширение php-mysql.
Попробуйте изменить php.ini:
На сервере Windows вы можете добавить следующие строки в php.ini
extension=php_pdo.dll extension=php_pdo_mysql.dll
На сервере Linux вы можете скомпилировать php со следующей опцией –with-pdo-mysql
В php.ini добавьте следующие строки
extension=pdo.so extension=pdo_mysql.so
Константа PDO::MYSQL_ATTR_INIT_COMMAND
определяется драйвером MySQL расширения PDO. Вы, скорее всего, тоже забыли установить.
После установки соответствующих расширений вы можете забыть о PDO::MYSQL_ATTR_INIT_COMMAND
. Правильный способ установки кодировки соединения – это то, что вы уже сделали – параметр DSN в конструкторе:
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username$ ^^^^^^^^^^^^
И последнее, но не менее важное: ваш код, похоже, содержит множество синтаксических ошибок. Вам необходимо включить полную отчетность об ошибках в файл php.ini, поскольку эти строки:
error_reporting(E_ALL); ini_set('display_errors', 'on');
… не будет выполняться, если скрипт даже не может работать.
sudo apt-get install php5-mysql
sudo php5enmod pdo
sudo php5enmod pdo_mysql