我有以下两个名称的数组:
$x = ['Rodriguez', 'RodrÃguez'];
现在,我要做的是将这些值插入到我的表中,如下所示
Collation: utf8mb4_unicode_520_ci
Engine: InnoDB
[id(primary_ai) - name(unique)]
我确实使用以下方式连接到数据库:
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=database;charset=utf8mb4;", 'root', 'root', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
]);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
我试着这样插入
$paras = $x
$pdo->prepare("INSERT INTO names (name) VALUES (?), (?)")->execute($paras);
但我一直在出错
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'RodrÃguez' for key 'name'
如何准确地处理这个编码问题?
我试过用
utf8_encode()
但是第二个名字改成了
RodrÃÂguez
,然后尝试
utf8_decode()
但是得到
Rodr�guez
,然后尝试添加
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"
但也没有解决重复错误。