Maison >développement back-end >Problème PHP >Des caractères tronqués se produisent lorsque PHP insère des données dans la base de données

Des caractères tronqués se produisent lorsque PHP insère des données dans la base de données

藏色散人
藏色散人original
2020-09-29 10:49:042982parcourir

La solution aux données tronquées lorsque PHP insère des données dans la base de données : définissez d'abord l'encodage de la base de données sur utf8 ; puis déterminez la méthode d'encodage du texte à insérer dans la base de données. Enfin, utilisez l'instruction switch pour déterminer ; l'insertion des données.

Des caractères tronqués se produisent lorsque PHP insère des données dans la base de données

Recommandé : "Tutoriel vidéo PHP"

L'insertion de données par PHP dans la base de données provoque des problèmes tronqués

Généralement, les données tronquées insérées dans la base de données sont un problème d'encodage. Vous pouvez vérifier la méthode d'encodage du contenu avant de l'insérer dans la base de données si elle est la même que la méthode d'encodage utilisée par le. base de données (telle que : utf-8), effectuez l'insertion. Si l'opération est différente, transcodez-la.

Déterminez d'abord la méthode d'encodage du texte que vous souhaitez insérer dans la base de données. S'il est en utf-8, insérez-le. Sinon, convertissez-le en utf-8 puis insérez-le :

        $e=mb_detect_encoding($text, array('UTF-8', 'GBK', 'gb2312'));
        switch($e){
            case 'UTF-8' : //如果是utf8编码就直接插入数据库
                break;
            case 'GBK': //如果是gbk编码就转换为utf-8之后再插入数据库
            iconv("GBK", "UTF-8",$data) ;
            break;
            case 'GB2312': //如果是GB2312编码就转换为utf-8之后再插入数据库
            iconv("GB2312", "UTF-8",$data) ;
        break;
        }
.

Je pensais que l'encodage dans le programme s'il est cohérent avec l'encodage utilisé dans la base de données, il n'y aura pas de caractères tronqués. Cependant, les données insérées dans la base de données contiennent toujours des caractères tronqués. Après avoir exclu l'incohérence de l'encodage, J'ai pensé que cela pourrait être dû au fait que l'encodage mysql n'était pas défini lors de l'utilisation de PHP pour se connecter à mysql. Effectivement, après vous être connecté à la base de données, définissez l'encodage de la base de données sur utf8, puis insérez la base de données dans la base de données sans caractères tronqués.

Le code est le suivant :

$this->conn = mysqli_connect($db['default']['hostname'], $db['default']['username'], $db['default']['password'], $db['default']['dbname']) or die('Connect error!'); //连接到数据库
mysqli_set_charset($this->conn, 'utf8'); //此处不能用utf-8

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn