Я продолжаю получать эту ошибку: PHP PDO: Charset = UTF8: в строке dsn была указана недопустимая фраза chacheet.
Мой код похож на этот
function ConnectToSQLAndGetDBConnSTRVar() { try { $dbname = "irina"; $serverName = ".\SQLEXPRESS"; $username = "USERNAME"; $pw = "PASSWORD"; $dbh = new PDO ("sqlsrv:server=$serverName;Database=$dbname;charset=utf8","$username","$pw"); return $dbh; } catch (PDOException $e) { print "Failed to get DB handle: " . $e->getMessage() . "\n"; exit; } }
И это не имеет значения, как я пишу utf8 .. UTF8 или UTF-8 или utf-8, ни один из них не работает для меня. Так что я делаю, пожалуйста, помогите мне ..
Вы можете найти параметры, принятые в строке DSN на этой странице руководства PHP .
В DSN нет параметра Charset
для драйвера PDO «SQL Server» (с префиксом DSN sqlserv:
.
Имейте в виду, что все драйверы PDO имеют разные соглашения о доставке, поскольку они передаются непосредственно драйверу и не нормализуются PDO.
Существует альтернативный драйвер PDO для SQL Server под названием «PDO_DBLIB», который принимает charset как параметр DSN , но имеет префикс «sybase:», «mssql:» или «dblib:», в зависимости от параметров компиляции.
У меня была такая же ошибка, следуя инструкциям, приведенным здесь, чтобы запретить чтение данных для чтения sql – сказано, что до php 5.3.6 charset игнорировался, и вы можете использовать его, включая опции:
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; // Set options $options = array( PDO::ATTR_PERSISTENT => true,//can help to improve performance PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //throws exceptions whenever a db error occurs PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES uft8' //>= PHP 5.3.6 ); try { $this->conn = new PDO($dsn, $this->user, $this->pass, $options); } catch ( PDOException $e ) { $this->error = $e->getMessage(); }