【发布时间】:2014-06-29 02:58:14
【问题描述】:
我在 mysql 库中插入数据时遇到问题。我正在使用下面的代码。一切正常,但是当我插入“克罗地亚”字母 (č,ć,š,đ,ž) 时,我在基数中收到错误的字母(类似于“Ä,ć,Å¡,Ä‘,ž”)。我的mysql表是utf8_croatian_ci。
if (isset($_POST['nazivpredmeta'])) {
$nazivpredmeta = filter_input(INPUT_POST, 'nazivpredmeta', FILTER_SANITIZE_STRING);
if ($insert_stmt = $mysqli->prepare("INSERT INTO predmet (ImePredmeta) VALUES (?)"))
{
$insert_stmt->bind_param('s', $nazivpredmeta);
if (! $insert_stmt->execute())
{
header('Location: ../error.php?err=Greska: INSERT');
}
}
header('Location: ./index.php?page=predmeti&unospredmeta=OK');
}
但是当我使用下面的代码时,一切正常,对于克罗地亚字母,我得到了正确的字母。
if (isset($_POST['nazivpredmeta'])) {
$naziv = $_POST['nazivpredmeta'];
$sqlquery="INSERT INTO predmet (ImePredmeta) VALUES ('$naziv')";
$results = mysql_query($sqlquery);
if (mysql_error()) echo "GREŠKA! ".mysql_errno().":".mysql_error();
}
我的问题是第一个代码有什么问题以及我需要在第一个代码中编辑什么???以及简短的解释
【问题讨论】:
-
什么是表结构?包括数据类型。
-
不要使用
filter_input()。它是那些奇怪的遗留 PHP 函数之一。您需要文字值,因为 db 层处理编码等。您可以使用 mysqli 语句(好!),但不要使用filter_input()。 -
页面使用的是什么编码?
-
表格有两个字段。首先是primary_key(AUTO_INCREMENT),其次是ImePredmeta varchar(50),utf8_croatian_ci
-
页面在 中有这个链接