我有一个包含拉丁字符的数据库,如á
,é
,ç
等。我可以使用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
作为数据库的字符集。
提前感谢你的帮助。
答案 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();