Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQLSTATE[HY000] [2019] Unknown character set

Sujet résolu
2 septembre 2016 à 15:05:55

Bonjour à tous,

Je bloque sur cette erreur depuis quelques heures : SQLSTATE[HY000] [2019] Unknown character set

Dans Phpmyadmin, mis à part ID pour l'instant tout est en varchar 255 utf8_general_ci

voici le code de la page : 

<?php
// Connexion à la base de données


$horse_name = isset($_POST['horse_name']) ? $_POST['horse_name'] : NULL;
$horse_gender = isset($_POST['horse_gender']) ? $_POST['horse_gender'] : NULL;
$horse_bday_year = isset($_POST['horse_bday_year']) ? $_POST['horse_bday_year'] : NULL;
$horse_bday_month = isset($_POST['horse_bday_month']) ? $_POST['horse_bday_month'] : NULL;
$horse_bday_day = isset($_POST['horse_horse_bday_day']) ? $_POST['horse_horse_bday_day'] : NULL;
$horse_race = isset($_POST['horse_race']) ? $_POST['horse_race'] : NULL;
$horse_color = isset($_POST['horse_color']) ? $_POST['horse_color'] : NULL;
$horse_health = isset($_POST['horse_health']) ? $_POST['horse_health'] : NULL;
$horse_past = isset($_POST['horse_past']) ? $_POST['horse_past'] : NULL;
$horse_care = isset($_POST['horse_care']) ? $_POST['horse_care'] : NULL;
$horse_eval = isset($_POST['horse_eval']) ? $_POST['horse_eval'] : NULL;
$horse_rank = isset($_POST['horse_rank']) ? $_POST['horse_rank'] : NULL;
$horse_status = isset($_POST['horse_status']) ? $_POST['horse_status'] : NULL;


echo $horse_name;
echo $horse_gender;
echo $horse_bday_year;
echo $horse_bday_month;
echo $horse_bday_day;
echo $horse_race;
echo $horse_color;
echo $horse_health;
echo $horse_past;
echo $horse_care;
echo $horse_eval;
echo $horse_rank;
echo $horse_status;


// Insertion du message à l'aide d'une requête préparée

try
{
	$bdd = new PDO("mysql:host=127.0.0.1;dbname=graal;charset=utf8', 'root', ''");
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

$bdd->query("SET NAMES UTF8");


$req = $bdd->prepare('INSERT INTO horses (horse_name,
											horse_gender,
												horse_bday_year,
													horse_bday_month,
														horse_bday_day,
															horse_race,
																horse_color,
																	horse_health,
																		horse_past,
																			horse_care,
																				horse_eval,
																					horse_rank,
																						horse_status) 

					VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

					$req->execute(array($horse_name,
											$horse_gender,
												$horse_bday_year,
													$horse_bday_month,
														$horse_bday_day,
															$horse_race,
																$horse_color,
																	$horse_health,
																		$horse_past,
																			$horse_care,
																				$horse_eval,
																					$horse_rank,
																						$horse_status,
																							));






?>

Merci d'avance pour votre aide, 

Gwenaël 

  • Partager sur Facebook
  • Partager sur Twitter
2 septembre 2016 à 16:42:45

Bonjour,

Lors de la création de l'objet PDO (ligne 39), essayes de remplacer 'utf8' par 'UTF8' (au cas où) ...

Sinon vérifies que ton fichier .php est bien encodé en UTF8.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
2 septembre 2016 à 17:27:14

Bonjour et merci pour le coup de main,

J'ai fais la modif ligne 39 

try
{
	$bdd = new PDO("mysql:host=127.0.0.1;dbname=graal;charset=UTF8', 'root', ''");
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}


Pas de changement

Sinon à priori la page de formulaire est bien en UTF8

<!DOCTYPE html>
<html lang="fr">

<header>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 </header>
 
<body>


<h1>Fiche de renseignement</h1>

<form method="post" action="horse_post.php">

	<h2>Identification</h2>
		<h3>Nom du cheval</h3></br>
			<input type="text" name="horse_name" value="Nom du cheval"*></br>

		<h3>Sexe</h3>
			<select  name="horse_gender">
    			<option value="Hongre"> Hongre </option>
   				<option value="Jument"> Jument </option>

			</select>
			
		<h3>Date de naissance</h3>
			<h4>Année <span>format XXXX</span></h4>
				<input type="number"  name="horse_bday_year" value="1987"*></br>
			<h4>Mois <span>format XX</span></h4>
				<input type="number"  name="horse_bday_month" value="03"*></br>
			<h4>Jour <span>format xx</span></h4>
				<input type="number"  name="horse_bday_day" value="25"*></br>
		<h3>Race</h3></br>
			<input type="text"  name="horse_race" value="Nom du cheval"*></br>
		<h3>Robe</h3></br>
			<input type="text"  name="horse_color" value="Nom du cheval"*></br>

	<h2>Evaluation comportementale</h2>
			<h3> Etat de santé actuel </h3>
			<input type="text"  name="horse_health" value="Bon"*></br>
			<h3> Antécédents connus </h3>
			<input type="text"  name="horse_past" value="Bon"*></br>
			<h3> Soins particuliers</h3>
			<input type="text"  name="horse_care" value="Bon"*></br>		


	<h2>Evaluation comportementale</h2>
			
				<!-- à <date> récupérer automatiquement -->
			<h3> Soins particuliers</h3>
			<input type="text"  name="horse_eval" value="Nom du cheval"*></br>

			<h3> Comportement </h3>
			<select  name="horse_rank">
    			<option value="0"> 0 cheval </option>
   				<option value="1"> 1 cheval </option>
    			<option value="2"> 2 chevaux</option>
    			<option value="3"> 3 chevaux</option>
			</select>
	
	<h2>Statut</h2>
			<input type="radio"  name="horse_status" value="adoptable" id="adoptable"> <label for="adoptable">Adoptable</label>
			<input type="radio"  name="horse_status" value="adopté" id="adopté"> <label for="adopté">Adopté</label></br><br><br>

			<input type="submit" name="sub"></br><br><br>


</form>

			

</body>

</html>



  • Partager sur Facebook
  • Partager sur Twitter
2 septembre 2016 à 17:53:55

gwenaelleroutier a écrit:

Sinon à priori la page de formulaire est bien en UTF8

Je parlais de l'encodage du fichier lui-même. Exemple dans notepad++ menu encodage, Convertir en UTF8 sans BOM.

Après il y une erreur de guillemets dans ta création de l'objet PDO non ? Je ferais plutôt ainsi :

$bdd = new PDO( 'mysql:host=127.0.0.1;dbname=graal;charset=UTF8', 'root', '' );
  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
23 novembre 2022 à 4:21:37

$insererUtilisateur = $bdd->prepare('INSERTINTO utilisatrice (photoUtilisateur,civiliteUtilisateur,nomUtilisateur,prenomsUtilisateur,nationaliteUtilisateur,paysUtilisateur,villeUtilisateur,contactUtilisateur,emailUtilisateur,statutProUtilisateur,secteurUtilisateur,societeUtilisateur,posteUtilisateur,licenceCAMPC,filiereLicenceUtilisateur,promoLicenceUtilisateur,masterCAMPC,filiereMasterUtilisateur,promoMasterUtilisateur,doctoratCAMPC,filiereDoctoratUtilisateur,promoDoctoratUtilisateur,identifiantConnexionUtilisateur,motDePasseUtilisateur,etatUtilisateur) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)');

                $insererUtilisateur -> execute ([$photoUtilisateur, $civiliteUtilisateur,$nomUtilisateur,$prenomsUtilisateur,$nationaliteUtilisateur,$paysUtilisateur,$villeUtilisateur,$contactUtilisateur,$emailUtilisateur,$statutProUtilisateur,$secteurUtilisateur,$societeUtilisateur,$posteUtilisateur,$licenceCAMPC,$filiereLicenceUtilisateur,$promoLicenceUtilisateur,$masterCAMPC,$filiereMasterUtilisateur,$promoMasterUtilisateur,$doctoratCAMPC,$filiereDoctoratUtilisateur,$promoDoctoratUtilisateur,$identifiantConnexionUtilisateur,$motDePasseUtilisateur,$etatUtilisateur]);
Autre souci j'aimerais savoir si cette manière d'insérer les infos de mon formulaire dans ma base de données est la bonne
Merci d'avance !

-
Edité par YannKoffi03 23 novembre 2022 à 11:37:54

  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2022 à 9:45:34

Bonjour,

charset=UTF-8

C'est UTF8, sans le tiret  ...

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération



-
Edité par Benzouye 23 novembre 2022 à 9:45:44

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
23 novembre 2022 à 11:30:08

Merci bien! Le code s'exécute
  • Partager sur Facebook
  • Partager sur Twitter