Jac*_*rky 0 php mysql encoding utf-8
我正在尝试使用编码将重音字符插入到mysql表中utf8_general_ci.
这是一个我想插入的简单字符串:
Porto leça da palmeira
Run Code Online (Sandbox Code Playgroud)
要插入该字符串,我将以这种方式使用php:
$string = "Porto leça da palmeira";
$id = "xxxx";
$sql = "INSERT INTO city_translates (id,city) VALUES ('$id','$string')";
$dbh = new PDO("mysql:host.....");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->query($sql);
Run Code Online (Sandbox Code Playgroud)
当我尝试从MysqlWorkBench该字符串访问时,它已以这种方式存储:
Porto - Le?Ãa da Palmeira
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用utf8_encode如下:
$string = utf8_encode($string);
Run Code Online (Sandbox Code Playgroud)
它将以这种方式存储:
Porto - Le?ßa da Palmeira
Run Code Online (Sandbox Code Playgroud)
我怎么解决?可能是我的错误?
谢谢!
(根据建议我把我的评论作为答案)
使用
$dbh = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
Run Code Online (Sandbox Code Playgroud)
并将变量更改为您自己的变量.
你也可以使用 $dbh->exec("set names utf8");
根据http://www.php.net/manual/en/ref.pdo-mysql.connection.php
我可能还建议您使用占位符而不是变量.有关这些语句的更多信息,请参阅PDO准备语句.即使你正在使用PDO,你仍然可以接受SQL注入,奇怪的是.
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |