Maison > Article > développement back-end > Des caractères tronqués se produisent lorsque PHP insère des données dans la base de données
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.
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!