Maison >développement back-end >Problème PHP >Comment résoudre les données chinoises tronquées ajoutées par l'insertion php
Lorsque nous utilisons PHP pour le développement de bases de données, nous devons souvent utiliser des instructions SQL pour insérer des données. Cependant, parfois lors de l'insertion de données chinoises dans la base de données, des caractères tronqués apparaissent. Cet article explique comment résoudre ce problème.
Tout d'abord, nous devons vérifier comment la base de données est encodée. Dans MySQL, vous pouvez vérifier la méthode d'encodage de la base de données via l'instruction SQL suivante :
SHOW VARIABLES LIKE 'character_set_database';
Si le résultat de sortie est utf8 ou utf8mb4, la méthode d'encodage par défaut de la base de données est UTF-8. Si les résultats de sortie sont dans d'autres codages, vous devez spécifier le jeu de caractères correspondant lors de l'utilisation de l'instruction INSERT.
En PHP, vous pouvez utiliser l'instruction suivante pour définir la méthode d'encodage :
mysqli_set_charset($mysqli, 'utf8');
Où, $mysqli est un objet mysqli connecté à la base de données. La définition de la méthode de codage sur UTF-8 peut garantir que les caractères tronqués n'apparaîtront pas lors de l'insertion de données chinoises dans la base de données.
Si les deux méthodes ci-dessus ne peuvent pas résoudre le problème tronqué, nous devons alors spécifier le jeu de caractères dans l'instruction INSERT. Par exemple :
INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (N'中文', 'English', ...)
Dans l'instruction SQL, utilisez N'' pour convertir la chaîne chinoise en codage Unicode afin de garantir que la chaîne chinoise ne sera pas tronquée.
Enfin, pour éviter les attaques par injection SQL et améliorer la réutilisabilité du code, nous vous recommandons d'utiliser des instructions préparées. Les instructions préparées peuvent être créées via des objets mysqli ou PDO, puis spécifier la méthode d'encodage lors de la définition des paramètres, par exemple :
$stmt = $mysqli->prepare("INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (?, ?, ...)"); $stmt->bind_param("ss", $val1, $val2, ...); $stmt->execute();
Dans cet exemple, lorsque vous utilisez la méthode bind_param pour définir les paramètres, définissez le jeu de caractères sur 'ss', ce qui signifie que le paramètre Il s'agit d'un type de chaîne et que le jeu de caractères est UTF-8.
Résumé
Cet article présente plusieurs méthodes pour résoudre le problème de l'ajout de caractères chinois tronqués dans PHP INSERT SQL, notamment la vérification de l'encodage de la base de données, la définition de la méthode d'encodage PHP, la spécification du jeu de caractères dans l'instruction SQL et l'utilisation d'instructions préparées. Pendant le processus de développement, nous devons choisir la méthode appropriée en fonction de la situation réelle et suivre les normes de codage pour garantir la lisibilité et la maintenabilité du code.
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!