Maison >développement back-end >Problème PHP >Comment résoudre le problème des caractères chinois tronqués lors de l'insertion de données dans la base de données en PHP

Comment résoudre le problème des caractères chinois tronqués lors de l'insertion de données dans la base de données en PHP

PHPz
PHPzoriginal
2023-04-10 09:44:46650parcourir

PHP est un langage de script open source populaire principalement utilisé pour le développement Web. Lorsque nous utilisons PHP pour le développement, nous pouvons rencontrer le problème des caractères chinois tronqués, notamment lors de l'insertion de données chinoises dans la base de données. Cet article explique comment éviter cette situation en PHP.

  1. Définir le codage des caractères

Lorsque nous nous connectons à la base de données, nous devons définir le jeu de caractères de la base de données pour qu'il soit cohérent avec le jeu de caractères du script PHP, sinon des caractères tronqués apparaîtront lors de l'insertion d'informations chinoises. Nous ajoutons le code suivant lors de la connexion à la base de données :

$con=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_query($con,"SET NAMES utf8");
  1. Insistez pour utiliser l'encodage UTF-8

UTF-8 est un encodage multi-octets qui prend en charge le jeu de caractères Unicode. L'utilisation du codage UTF-8 peut garantir que les données contenant du chinois dans la base de données peuvent être insérées correctement. Nous pouvons vérifier si le fichier PHP est encodé en UTF-8 par la méthode suivante :

$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");

Si le $encoding renvoyé est "UTF-8", le fichier PHP est encodé en UTF-8.

  1. Utilisez les fonctions PHP pour échapper aux chaînes

Lors de l'exécution d'instructions SQL, nous devons utiliser des fonctions pour convertir les chaînes en chaînes sécurisées SQL afin de garantir la sécurité des données de la base de données. PHP fournit une fonction pour échapper aux chaînes - mysqli_real_escape_string(). Nous pouvons simplement échapper à la chaîne avant d'insérer de nouvelles données.

$name=mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO TABLE_NAME(name) VALUES('$name')";
mysqli_query($con,$sql);
  1. Utilisation d'objets de données PHP (PDO)

PDO est une couche d'abstraction de base de données PHP qui peut prendre en charge une variété de bases de données. Lors de l'utilisation de PDO, nous pouvons définir le codage des caractères pour la connexion à la base de données et utiliser la fonction PDO::quote() pour échapper.

$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8";
$username = "username";
$password = "password";
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
);

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    $name = $pdo->quote($_POST['name']);
    $sql = "INSERT INTO TABLE_NAME(name) VALUES($name)";
    $pdo->exec($sql);
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
    die();
}

Lors de l'utilisation de php insert, si vous rencontrez le problème des caractères chinois tronqués, nous pouvons le résoudre grâce à la méthode ci-dessus. Des paramètres de codage de caractères corrects, l'échappement de chaînes et l'utilisation de PDO peuvent garantir que nous pouvons insérer avec succès des données chinoises dans la base de données à tout moment.

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