使用php预处理语句插入mysql记录时编码错误

时间:2014-10-25 10:19:29

标签: php mysql mysqli

我想使用mysqlphp中将一些波斯语单词作为prepared statments数据插入。 这是我的php代码:

$mysqliObj = new mysqli(HOST, USER_NAME, PASSWORD, DB_NAME);

mysqli_query($connection, "SET NAMES utf-8");
$stmt = $mysqliObj->prepare("INSERT INTO slideshow (slide_url, slide_title, slide_comment) VALUES (? , ? , ?)");
$stmt->bind_param('sss', $val1, $val2, $val3);
$val1 = $slidePathName;
$val2 = $_POST['title'];
$val3 = $_POST['comment'];
$result = mysqli_stmt_execute($stmt);
$stmt->close();

插入效果很好,但phpMyAdmin显示آموزش اندروید پایه 搜索后我找到了这一行:

mysqli_query($connection, "SET NAMES utf-8");

并像这样设置php标题:

<?php header('Content-Type: text/html; charset=utf-8'); ?>

并在html中:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

但编码仍有问题。 任何想法都会有帮助。 感谢

2 个答案:

答案 0 :(得分:1)

在您的查询中使用此选项。

$mysqliObj->set_charset("utf8");

答案 1 :(得分:0)

charset在MySQL中称为utf8,而不是utf-8。最好是,如果您的版本足够新,请使用utf8mb4获得完整的UTF-8兼容性。同样最好使用mysqli_set_charset函数,而不是SET NAMES查询。