我有一个包含拉丁字符的数据库,例如 á
、é
、ç
等。我可以使用 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
作为数据库的字符集。
预先感谢您提供的任何帮助。
最佳答案
首先将表行排序设置为 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();
关于php - 使用php在mysql中插入拉丁字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47981882/