使用php在mysql中插入拉丁字符?

时间:2017-12-26 17:37:24

标签: php mysql

我有一个包含拉丁字符的数据库,如áéç等。我可以使用MySQL管理界面通过在那里编写SQL插入语句来插入带有这些字符的元组。我也可以毫无问题地阅读和显示它们。但我无法使用PHP正确插入新数据。

$mysqli = new mysqli("localhost", "root", "", "budgets");
$data = mysqli_real_escape_string($mysqli, "bananá");
$stmt = $mysqli->prepare("INSERT INTO items(id_budget, description, unit_price, quantity) VALUES (1, ?, 3, 3);");
$stmt->bind_param("s", $data);
$stmt->execute();

我已经阅读了几个建议使用mysqli_real_escape_string()的线程,并确保字符集配置正确,但没有任何效果。

我尝试在数据库中使用不同的字符集,但á总是被奇怪的符号替换。目前我使用utf8_general_ci作为数据库的字符集。

提前感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

首先将表行collcation设置为utf8_unicode_c

并将$mysqli->set_charset("utf8");添加到您的连接代码

最终你的代码应该是这样的:

$mysqli = mysqli_connect(HOST_NAME,DB_USER,DB_PASS,DB_NAME);
if($mysqli === false) {
 die("Something was wrong ! Please try again later."); // Error if connection not ok.
} 
$mysqli->set_charset("utf8");
$data = "bananá";
$stmt = $mysqli->prepare("INSERT INTO items(id_budget, description, unit_price, quantity) VALUES (1, ?, 3, 3);");
$stmt->bind_param("s", $data);
$stmt->execute(); 
$stmt->close();
$mysqli->close();