【发布时间】:2017-12-27 08:11:56
【问题描述】:
我正在使用 php 将此变量插入到 mySQL 数据库中:
$name="Ele ╠phant";
$db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db -> exec("set names utf8");
$sql = "INSERT INTO data (name) values(?) ";
$q = $pdo->prepare($sql);
$q->execute(array($name));
我希望它完全像这样 (Ele ╠phant) 存储在数据库中。
但是通过 phpMyadmin 我看到它不是这样存储的:
Ele?phant
我的排序规则是utf8_general_ci。
我测试了另一种方法:
$db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db -> exec("set names utf8mb4");
$sql = "INSERT INTO data (name) values(?) ";
$q = $pdo->prepare($sql);
$q->execute(array($name));
在 phpMyadmin 中,我将排序规则设置为 utf8mb4_general_ci,但它仍然存储 Ele?phant
【问题讨论】:
-
您确定代码正在存储
Ele?phant???当您将连接存储在$db上时,您正在使用$pdo作为连接资源!注意你的连接,否则 utf8_general_ci 应该与╠这个字符一起使用 -
把sql语句前后的双引号换成单引号再试一次。
标签: php mysql pdo phpmyadmin special-characters