PHP mysqli stmt unicode scrambled

时间:2013-02-13 06:46:54

标签: php mysqli

$HotelName = "Adams’ Inn";
$ID = 1;
$stmt = $sql->prepare("UPDATE coupons SET HotelName=? WHERE ID=?");
$stmt->bind_param("si",$HotelName,$ID);
$stmt->execute();

输出:Adams’Inn

顺便说一句,我有以下内容:

字符集:utf8

校对:utf8_general_ci

3 个答案:

答案 0 :(得分:2)

清单

    连接后
  1. $sql->set_charset('utf8')
  2. 任何输出之前
  3. header('Content-Type: text/html; charset=utf-8');
  4. 涉及两方面 - 服务器和客户端。客户端是指PHP脚本,而不是HTTP客户端。服务器需要知道客户期望的编码 并且您只设置服务器端编码,告诉mysql必须存储哪些编码数据 但也有一个客户。

    事实上,Mysql在重新编码方面非常出色。只要一个编码可以翻译成其他编码,Mysql就可以做到。例如,对于不同的客户 现在并没有太多要求,但这个特征存在。因此,Mysql需要知道客户端支持哪种编码。出于这个目的,存在set_charset()函数。

答案 1 :(得分:0)

您的查询中缺少SET个关键字

$HotelName = "Adams’ Inn";
$ID = 1;
$stmt = $sql->prepare("UPDATE coupons SET HotelName=? WHERE ID=?");
$stmt->bind_param("si",$HotelName,$ID);
if($result=$stmt->execute())
   echo "Data Updated Sucessfully!!!";
else
   echo "Error in Update";

答案 2 :(得分:-1)

它如此简单

刚刚放

mysqli_set_charset($db_connection, 'utf8');
数据库连接后

示例

$con=mysqli_connect("localhost", "root", "xxxxx","database");
mysqli_set_charset($con, 'utf8');