我对我与PHPmyadmin mysql的PDO连接做错了什么很茫然。我知道这个问题在其他SO文章中已经问过很多遍了,我查了一下,但仍然有问题。我不知道我在做什么错。
这是与我要解决的问题类似的SO文章。
Other SO problem similiar to mine
这是我的配置设置:
MySQL版本::10.1.38-MariaDB-mariadb.org二进制分发版
PHP版本: 5.6.40
服务器字符集: UTF-8 Unicode(utf8)
数据库连接文件:
<?php
session_start();
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
$dbhost_name = "localhost";
$database = "testdb";
$username = "root";
$charset='utf8mb4';
$password = "";
try {
$dbo = new PDO('mysql:host='.$dbhost_name.';dbname='.$database.';charset='.$charset.$username, $password);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
在我的config.inc.php中,设置以下规则:
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
答案 0 :(得分:1)
字符集变量和用户名变量之间的时间间隔导致无效的字符集。如图所示,PDO构造函数看到的字符集为utf8mb4root
。将该时间段更改为逗号以使其符合PDO构造函数的规范,将导致连接按预期工作。
更正后的代码是:
try {
$dbo = new PDO('mysql:host =' . $dbhost_name .
';dbname =' . $database .
';charset =' . $charset , // this was a period, needed to be a comma
$username ,
$password);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}