【发布时间】:2015-02-05 14:50:06
【问题描述】:
在“Renè”等名称中插入带有特殊字符的值时遇到问题。名称“Renè”在我的数据库中显示如下:“René”
我试图将数据库中的字段更改为“utf8_general_ci”,但这没有帮助,所以它可能在我的代码中。
该名称来自 JQuery Ajax 请求,我能够在被调用的 .php 文件中正确地回显该名称。
$fullname = $_POST['playersearch'];
echo "<div class='n_ok'><p>Inserted $fullname successfully (PlayerID is $id)</p></div>";
我使用 PDO 连接到我的数据库并指定了 UTF-8 字符集:
$db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass,array('charset'=>'utf8'));
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
插入数据库发生在这里:
$stmt = $db->prepare("INSERT INTO PlayerCards (playerName, buyPercentage) VALUES (?, ?)");
$stmt->bindParam(1, $fullname);
$stmt->bindParam(2, $buypercentage);
为什么它在我的 MySQL 数据库中看起来如此奇怪?
【问题讨论】:
-
使用
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")代替array('charset'=>'utf8') -
这就是解决方案。谢谢!
-
不客气。您也可以删除问题。我不需要回答,除非你真的也想要我并结束问题,干杯
-
我想把它留在这里给有类似问题的其他人。我从一个 php 帮助页面处理了这个原始的 pdo 脚本,所以可能其他人也这样做了,并且有一天会想知道。
-
在DSN上设置有什么问题,比如
mysql:host=$dbhost;dbname=$dbname;charset=utf8?