-1

我正在通过 php 使用 pdo 来更新我的 sql。当我将主要值放入数据库时​​,编码似乎很好。但是由于某些或其他原因,当我使用 sql UPDATE 命令更改数据时,我会变得乱七八糟。为了确保我传递数据的方式没有问题,我将我发送的查询更改为我控制的静态数据,并且在更新后它仍然给我带来了乱码。

这就是我发送数据的方式:

function ConnectToSQLAndGetDBConnSTRVar() {
    try {
    $dbname = "db";
    $serverName = ".\SQLEXPRESS";  
    $username = "user";
    $pw = "pass"; 
    $dbh = new PDO ("sqlsrv:server=$serverName;Database=$dbname","$username","$pw"  );
    return $dbh;
    } 
    catch (PDOException $e) {
    print "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
    }    
} 
  $db = ConnectToSQLAndGetDBConnSTRVar;
  $NewQuery = "UPDATE subtopics SET SubTopic_Name = 'תוכן' WHERE SubTopic_ID=1";
  $db->query($NewQuery);

你可能会看到我的内容是胡言乱语,但我向你保证不是,它只是用另一种语言..

注意:我不能使用 charset=utf-8 它给我一个错误:在 dsn 字符串中指定了无效的关键字字符集

4

2 回答 2

0

您可以将其添加到$driver_options数组(的最后一个参数new PDO()):

ARRAY(PDO::MYSQL_ATTR_INIT_COMMAND, "SET CHARACTER SET utf8")
于 2013-09-25T01:21:11.443 回答
0

您将 Unicode 数据存储在NVARCHAR列中。您需要将字符串表示为 Unicode,例如

$NewQuery = "UPDATE subtopics SET SubTopic_Name = N'תוכן' WHERE SubTopic_ID=1";
--------------------------------------------------^ this N is important
于 2013-09-25T01:22:08.007 回答