2016-12-14 2 views
0

Je rencontre un problème étrange, je ne sais pas quel devrait être le titre et j'ai cherché avant de poster ceci, le classement de ma base de données est utf8mb4_general_ci
et La colonne, , mais quand je tape dans le champ de texte de cette colonne le code php l'enregistre très bien, mais quand ce texte spécial est copié de quelque part la colonne reste vide! J'ai déjà cet ensemble dans mon codePHP Charset UTF8mb4, les caractères spéciaux ne sont pas sauvegardés dans phpmyadmin lorsqu'ils sont copiés

$this->connection = new mysqli(HOST, USER, PASS, DB); 
$this->connection->set_charset('utf8mb4'); 

Répondre

0

Vous devez utiliser la fonction suivante avant de l'insérer dans la base de données, dans laquelle est input_data les données que vous souhaitez stocker dans la base de données. Et le problème est que la base de données ne permet pas le caractère spécial, et surtout ces caractères sont utilisés pour l'injection SQL, donc cette fonction fait le nettoyage en s'échappant, ainsi les données peuvent être sauvegardées en toute sécurité.

$mysqli->real_escape_string($input_data); 

Cliquez sur ce lien pour la documentation mysqli::real_escape_string

+0

J'ai cette classe 'MySQL class { public connexion $; fonction publique __construct ($ autoConnect = false) { si (AutoConnect $ === true) { $ this-> connect();}} public function connect() { $ this-> connexion = new mysqli (HÔTE, UTILISATEUR, PASS, DB); $ this-> connection-> set_charset ('utf8mb4'); exit(); }} ' ** maintenant, voici comment je l'appelle, je suis sûr que je fais quelque chose de mal ici ** ' $ mysql = new MySQL (true); $ description = mysqli_real_escape_string ($ mysql, $ description); ' – user1702856

+0

ok vous utilisez mysql api pas mysqli changez-le – Afzaal

+0

$ mysqli = new mysqli (true); – Afzaal