0

我有以下代码将一些数据插入到我的数据库中:

$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>';

问题是,每当我查看数据库中插入的信息时,它都会变成奇怪的字符串,例如:&#1489;&#1506;&#1489;&#1512;&#1497;&#1514; 我不知道为什么会这样!

PS如果我插入英文字符串,没关系。它在数据库中显示为正确的英语。当我以我的语言插入数据时会发生这种情况。

4

4 回答 4

-1

这可能是字符集和排序规则的问题。您可能需要将它们设置为 UTF-8

http://en.wikipedia.org/wiki/UTF-8

于 2013-10-23T19:16:43.053 回答
-1

从绑定中删除 PDO::PARAM_STR 并在代码中使用它一次:

mb_internal_encoding("UTF-8"); //for utf unicodes
internal_encoding("your unicode"); //

或者

default_charset = "your unicode";
于 2013-10-23T19:20:41.357 回答
-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 实体代码。

希望这会对某人有所帮助。

于 2013-10-24T13:16:15.230 回答
-2

每当我查看数据库中插入的信息时,它都会变成奇怪的字符串,例如:&#1489;&#1506;&#1489;&#1512;&#1497;&#1514;我不知道为什么会这样!

我有。
这些符号与数据库完全无关。
它是HTML 编码,mysql 永远不会以这种方式编码您的数据。

它是其他一些软件,可以在将数据添加到数据库之前对其进行转换。您只需输出这些字符即可轻松验证它(当然不是由浏览器呈现)。很可能它是某种“全消毒”功能,您绝对必须摆脱它。

于 2013-10-24T05:22:37.893 回答