我正在使用pdo通过php来更新我的sql。 当我在DB中放置主值时,编码似乎没问题。 但由于某些或其他原因,我使用sql UPDATE命令 改变数据即时通讯。 为了确保我传递数据的方式没有任何问题,我将查询发送的信息改为我控制的静态数据,并且在更新后它仍然给我带来了gibrish。
这是我发送数据的方式:
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字符串
中指定了无效的关键字字符集答案 0 :(得分:0)
您可以将其添加到$driver_options
数组(new PDO()
的最后一个参数):
ARRAY(PDO::MYSQL_ATTR_INIT_COMMAND, "SET CHARACTER SET utf8")
答案 1 :(得分:0)
您将Unicode数据存储在NVARCHAR
列中。您需要将字符串表示为Unicode,例如
$NewQuery = "UPDATE subtopics SET SubTopic_Name = N'תוכן' WHERE SubTopic_ID=1";
--------------------------------------------------^ this N is important