0

このエラーが発生し続けます: PHP PDO: Charset=UTF8: 無効なキーワード charset が dsn 文字列で指定されました。

私のコードはこのようなものです

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のどれも私にとっては機能しません..だから私は何をすればいいですか..

4

2 に答える 2

0

hereの指示に従って、マニュアル を読んでSQLインジェクションを防止しているときに同じエラーが発生しました-php 5.3.6より前の文字セットは無視され、オプションを含めて使用できると言われています:

$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();
}
于 2014-01-31T08:06:45.257 に答える