我有以下代码将一些数据插入我的数据库:
$query = "INSERT INTO `questions`(`title`,`content`,`set`,`date`) VALUES(:title,:content,:set,:date)";
$stmt = $db -> prepare($query);
$stmt -> bindParam(':title',$title,PDO::PARAM_STR);
$stmt -> bindParam(':content',$content,PDO::PARAM_STR);
$stmt -> bindParam(':set',$set,PDO::PARAM_INT);
$stmt -> bindParam('date',$date,PDO::PARAM_STR);
$stmt -> execute();
echo '<script>alert("שאלה נוספה בהצלחה");</script>';
问题是,每当我在DB中查看插入的信息时,它就会变成奇怪的字符串,例如:בעברית
我不知道为什么会发生这种情况!
P.S。如果我插入英文字符串,那就可以了。它在数据库中显示为正确的英语。当我用我的语言插入数据时会发生这种情况。
答案 0 :(得分:-1)
字符集和整理可能存在问题。您可能需要将它们设置为UTF-8
答案 1 :(得分:-1)
从绑定中删除PDO :: PARAM_STR 在你的代码中使用它一次:
mb_internal_encoding("UTF-8"); //for utf unicodes
internal_encoding("your unicode"); //
OR
default_charset = "your unicode";
答案 2 :(得分:-1)
检查了一会儿之后,我发现了问题所在。
我从输入中获取的表单不在HTML标记内,因为它是一个快速且非常简单的界面。
在考虑之后,我尝试在正确的HTML标记内部执行表单。我已在此附上<form>
标记:
<html dir="rtl">
<head>
<title>Insert a new question</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> // important line
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<!-- form here -->
</body>
</html
在这之后,给出的输入是一个正确的希伯来字母而不是HTML实体代码。
希望这会对某人有所帮助。
答案 3 :(得分:-2)
每当我在DB中查看插入的信息时,它就会变成奇怪的字符串,例如:
בעברית
我不知道为什么会发生这种情况!
我有。
这些符号绝对与数据库无关。
它是 HTML编码,而mysql永远不会以这种方式编码你的数据。
这是一些其他软件,可以在 之前将数据转换为数据库。您可以通过输出这些字符(当然不是由浏览器呈现)轻松验证它。很可能是它的某种“全消毒”功能,你必须摆脱它。