Maison  >  Article  >  développement back-end  >  Comment résoudre le problème des caractères tronqués insérés dans la base de données en PHP

Comment résoudre le problème des caractères tronqués insérés dans la base de données en PHP

PHPz
PHPzoriginal
2023-03-28 15:00:29768parcourir

Lorsque vous utilisez PHP pour insérer des données dans la base de données, vous rencontrerez parfois des caractères tronqués. Cela est dû au fait que les jeux de caractères sont incohérents lors de la transmission des données. Cet article explique comment résoudre le problème des caractères tronqués insérés dans la base de données en PHP.

1. Vérifiez le jeu de caractères de la base de données

Avant de commencer à résoudre le problème, vous devez d'abord vérifier le jeu de caractères de la base de données. Vous pouvez utiliser la commande suivante pour afficher le jeu de caractères de la base de données actuelle :

SHOW VARIABLES LIKE 'character_set_database';

Si le jeu de caractères de la base de données n'est pas UTF-8, vous devez le modifier en UTF-8 pour vous assurer que les données peuvent être insérées et lues. correctement. Vous pouvez utiliser la commande suivante pour modifier le jeu de caractères de la base de données sur UTF-8 :

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

2. Définissez le format d'encodage du fichier PHP

Définissez le format d'encodage sur UTF-8 en haut du fichier PHP pour vous assurer que les chaînes en PHP sont correctes Insérez dans la base de données. Vous pouvez utiliser le code suivant pour définir le format d'encodage PHP :

header('Content-Type: text/html; charset=UTF-8');

3. Définissez le format d'encodage mysqli

Lors de l'insertion de données à l'aide de l'extension mysqli en PHP, vous devez définir le format d'encodage mysqli. Vous pouvez utiliser le code suivant pour définir le format d'encodage mysqli :

$mysqli = new mysqli("localhost", "username", "password", "database_name");
$mysqli -> set_charset("utf8");

4. Utilisez la fonction htmlspecialchars

Avant d'insérer des données, utilisez la fonction intégrée PHP htmlspecialchars pour échapper à la chaîne qui doit être insérée. Cela peut éviter que les caractères spéciaux n'affectent la base de données. Vous pouvez utiliser le code suivant pour échapper la chaîne :

$str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');

5. Utilisez l'instruction préparée

L'utilisation d'une instruction préparée peut empêcher efficacement l'injection SQL et également éviter les caractères tronqués. Vous pouvez utiliser le code suivant pour insérer des données à l'aide de l'instruction préparée :

$stmt = $mysqli -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> bind_param("ss", $val1, $val2);
$val1 = htmlspecialchars($val1, ENT_QUOTES, 'UTF-8');
$val2 = htmlspecialchars($val2, ENT_QUOTES, 'UTF-8');
$stmt -> execute();

6. Utiliser PDO

L'utilisation de PDO peut gérer les opérations de base de données plus facilement et plus efficacement en évitant les problèmes de code tronqué. Vous pouvez utiliser le code suivant pour insérer des données à l'aide de PDO :

$conn = new PDO("mysql:host=localhost;dbname=database_name;charset=utf8", "username", "password");
$stmt = $conn -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> execute([$val1, $val2]);

7. Résumé

Lors de l'insertion dans la base de données à l'aide de PHP, il est très courant de rencontrer des problèmes de code tronqué. Cependant, vous pouvez facilement résoudre le problème des caractères tronqués en suivant simplement les étapes ci-dessus. Il convient de noter qu'avant d'effectuer des opérations sur la base de données, vous devez d'abord vérifier si le jeu de caractères de la base de données est correct. Il s'agit d'une étape importante pour éviter les caractères tronqués.

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