Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在核心php中保存数据库中的特殊字符_Php_Sql_Special Characters - Fatal编程技术网

在核心php中保存数据库中的特殊字符

在核心php中保存数据库中的特殊字符,php,sql,special-characters,Php,Sql,Special Characters,我想在数据库中保存特殊字符,如以下字符串:- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 下面是我正在使用的代码 $Fields ['CommentText']=$CommentText; $Fields = prepareMySQLi($FieldsNotifications,$linkMysqli); $insert = mysqli_query($l

我想在数据库中保存特殊字符,如以下字符串:-

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

下面是我正在使用的代码

 $Fields ['CommentText']=$CommentText;
$Fields = prepareMySQLi($FieldsNotifications,$linkMysqli);
$insert = mysqli_query($linkMysqli,"INSERT INTO `feeds` SET $Fields");

    function prepareMySQLi($MyArray,$linkMysqli) {
        foreach($MyArray as $col => $val) {
                if($val=='Invalid Request') $val='';
                if ($val!='' && !is_array($val)) {
                        $col = mysqli_real_escape_string($linkMysqli,$col);
                        $val = mysqli_real_escape_string($linkMysqli,$val);
                        if(isset($fields)) {
                                $fields .= ", `$col` = '$val' ";
                        } else {
                                $fields = " `$col` = '$val' ";
                        }
                }
        }
return $fields;
}
但上述代码保存的结果如下:-


非常好,非常好


有人能告诉我如何保存与数据库中相同的字符串吗?这似乎是编码问题。您接收的数据的编码应与存储它的数据库的编码相同

一般做法是对两者都使用“utf-8”编码

因此,请检查数据库存储数据的编码,并尝试将接收到的数据转换为该格式,反之亦然


您可以使用
utf8\u encode
功能将数据编码为“utf-8”。

请通过做这两件简单的事情进行检查,我希望它能帮助您:-

  • 要在其中保存此数据的列(特殊字符)的
    “collation”
    使其成为
    “utf-8-bin”

  • 将列的类型更改为
    “blob”
    “text”
    “long text”

  • 在代码中尝试:-
    mysqli\u set\u字符集($linkMysqli,“utf8”);

  • 编码和解码过程
    。在保存文本之前,对其进行编码,如果要在某处显示,则首先对其进行解码,然后显示


  • 简单的事情就是改变

    数据库中的排序utf8->utf8\u unicode\u ci

    如果您不使用字段作为文本,请键入,然后将其更改为文本

    也许这是一个简单的解决方案

    其他事情可能你可以检查你的Mysqli数据库类在哪里

    'charset'   => 'utf8',
    
    有没有

    如果找不到字符集,请更改为utf8

    最后检查你的页眉

    <meta charset="utf-8">
    
    
    

    也就是说,在保存到数据库后,您可能会得到一些东西。

    它是如何从数据库返回字符串的?据猜测,您的数据库没有配置为处理UTF-8。非常好。我不想配置我的数据。我需要按原样保存字符串。您能帮我吗?我不想配置我的数据如果你不想让数据库处理UTF-8,你希望如何处理UTF-8?我已经尝试了你提到的第一种方法,但它不起作用..我不能使用编码-解码方法..我只能在保存文本或数据库时进行更改,正如你提到的.我已经提到了我的sqli_set_charset($linkMysqli,“utf8”);以及我刚才提到的它现在的工作原理:-mysqli_set_charset($linkMysqli,“utf8”);不要使用utf8_*排序设置。使用utf8mb_*处理Unicode基本多语言平面之外的字符。在utf8_*排序中不起作用的字符示例: