8768 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

Je suis entrain de passer de Mysql à PDO, et je galère pour faire un enregistrement sur ma table.

Mon code :

$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe); 
	$connexion->exec("SET CHARACTER SET utf8"); 
  	$req=$connexion->query('INSERT INTO Articles "l","t","d","pc","p","m","s","r","dis" VALUES("'.$l.'","'.$t.'","'.$d.'","'.$pc.'","'.$p.'","'.$m.'","'.$s.'","'.$r.'","'.$dis.'")');


Je souhaite faire des enregistrement pour les différents champs. En mysql, ça fonctionne mais là je galère comme un malheureux Smiley bawling

Je n'ai pas de message d'erreur et aucune nouvelle ligne dans ma bdd.

Les recherches, j'y arrive sans problème.

J'ai essayé de trouver des cours, mais je n'y arrive pas.

Une exemple serait bien ? Smiley eek

Merci de votre aide.
Modifié par Tintin75 (23 Jan 2016 - 20:33)
salut,
déjà pour commencer il y a deux méthode utiles quand tu utilises PDO qui sont : errorInfo et errorCode.
Ensuite pour répondre à ta requête (ho ho ho oui il y a un jeu de mots), tu devrais peut être te renseigner sur les requêtes préparées et voir si ça t'avances plus.
Merci, il faut que je trouve un cours. Le but est de pouvoir enregistré des données dans ma base en pdo. En Mysql, je sais faire.

On peut avoir un exemple ? Car j'apprends mieux avec un exemple.

Merci d'avance.

$connexion->exec("INSERT INTO Articles(l, d, p) VALUES ('Test1', 'La vie', '33.00')");
Ca enregistre bien dans la bdd.

Je veux remplacer Test1, La vie et 33.00 par des variables $l, $d, $p là je bloque.

Un petit coup de main et je suis sorti d'affaire.

Merci d'avance. Smiley smile
Modifié par Tintin75 (23 Jan 2016 - 19:50)

 echo "\nPDO::errorInfo():\n";
 echo "\nPDO::errorCode(): ";

$req = (isset($_POST['req']) ? $_POST['req'] : ""); 
    $l = (isset($_POST['l']) ? $_POST['l'] : ""); 
 	$t = (isset($_POST['t']) ? $_POST['t'] : ""); 
    $d = (isset($_POST['d']) ? $_POST['d'] : ""); 
    $pc = (isset($_POST['pc']) ? $_POST['pc'] : ""); 	
	$p = (isset($_POST['p']) ? $_POST['p'] : ""); 
    $m = (isset($_POST['m']) ? $_POST['m'] : ""); 
    $s = (isset($_POST['s']) ? $_POST['s'] : ""); 
    $r = (isset($_POST['r']) ? $_POST['r'] : ""); 
 	$dis = (isset($_POST['dis']) ? $_POST['dis'] : "");
	
	$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe); 
	$connexion->exec("SET CHARACTER SET utf8"); 
	$connexion->exec("INSERT INTO Articles(l,t,d,pc,p,m,s,r,dis) VALUES(:l, :t, :d, [langue]c, [langue], :m, :s, :r, :dis)");
	$connexion = $db->prepare(array(
	'l' => $l,
	't' => $t,
	'd' => $d,
	'pc' => $pc,
	'p' => $p,
	'm' => $m,
	's' => $s,
	'r' => $r,
	'dis' => $dis
	));

echo 'Enregristement validé';


L'erreur est là :
$connexion = $db->prepare(array(

Je cherche depuis 1 heure et je trouve pas Smiley bawling
Modifié par Tintin75 (23 Jan 2016 - 21:02)
Modérateur
Bonjour,

$db est définie ?

prepare n'a-t-elle pas comme premier paramètre une chaine ?

Amicalement,
Modifié par parsimonhi (23 Jan 2016 - 21:07)
Non, j'arrive pas à savoir ce que c'est !!!

Je tourne en rond
Modifié par Tintin75 (23 Jan 2016 - 21:14)
Modérateur
Bonjour,

Ton $db, déjà, tu le définie où ?

Je vois rien dans le code qui le crée.

Amicalement,
Je l'utilise pas.

$connexion = $?->prepare(array(

? il faut mettre quoi
Modifié par Tintin75 (23 Jan 2016 - 21:15)
Retour serveur :
PDO::errorInfo(): PDO::errorCode():

PDO::errorInfo(): PDO::errorCode():

Fatal error: Uncaught Error: Call to a member function prepare() on string
Modifié par Tintin75 (23 Jan 2016 - 21:18)
Modérateur
Bonjour,

A la place de $connexion = $db->prepare(), c'est plutôt :

$connexion->prepare()

Ensuite, comme paramètre, il faut mettre une chaine, pas un tableau comme tu le fais.

Amicalement,
$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
$connexion->exec("SET CHARACTER SET utf8");
$connexion->exec("INSERT INTO Articles(l,t,d,pc,p,m,s,r,dis) VALUES(:l, :t, :d, Smiley langue c, Smiley langue , :m, :s, :r, :dis)");
$connexion->prepare($l,$t,$d,$pc,$p,$m,$s,$r,$dis);

Comme ça ?
Modifié par Tintin75 (23 Jan 2016 - 21:28)
merci de ta patience, je ne suis pas doué Smiley bawling

<?php

	
 echo "\nPDO::errorInfo():\n";
 echo "\nPDO::errorCode(): ";

    $l = (isset($_POST['l']) ? $_POST['l'] : ""); 
 	$t = (isset($_POST['t']) ? $_POST['t'] : ""); 
    $d = (isset($_POST['d']) ? $_POST['d'] : ""); 
    $pc = (isset($_POST['pc']) ? $_POST['pc'] : ""); 	
	$p = (isset($_POST['p']) ? $_POST['p'] : ""); 
    $m = (isset($_POST['m']) ? $_POST['m'] : ""); 
    $s = (isset($_POST['s']) ? $_POST['s'] : ""); 
    $r = (isset($_POST['r']) ? $_POST['r'] : ""); 
 	$dis = (isset($_POST['dis']) ? $_POST['dis'] : "");
	
	
	
	$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe); 
	$connexion->exec("SET CHARACTER SET utf8"); 
	$connexion->prepare($l,$t,$d,$pc,$p,$m,$s,$r,$dis);
	$connexion->exec("INSERT INTO Articles(l,t,d,pc,p,m,s,r,dis) VALUES(:l, :t, :d, [langue]c, [langue], :m, :s, :r, :dis)");

			
echo "<img src='Ok.png' border='0' />";
echo "Enregistrement dans la base de donn&eacute;e effectu&eacute;e";
?>


Warning: PDO::prepare() expects at most 2 parameters, 9 given in

$connexion->prepare($l,$t,$d,$pc,$p,$m,$s,$r,$dis);
Modifié par Tintin75 (23 Jan 2016 - 21:34)
Modérateur
Bonjour,

J'aurais mis ça, mais je fais un peu au pif parce que j'ai pas de quoi tester juste là.

$connexion->prepare("INSERT INTO Articles(l,t,d,pc,p,m,s,r,dis) VALUES(?,?,?,?,?,?,?,?,?)");
$connexion->exec(array($l,$t,$d,$pc,$p,$m,$s,$r,$dis));

Amicalement,
Warning: PDO::exec() expects parameter 1 to be string, array given

$connexion->exec(array($l,$t,$d,$pc,$p,$m,$s,$r,$dis));
Modérateur
Bonjour,

Mea culpa, c'est execute, pas exec.

$connexion->execute(array($l,$t,$d,$pc,$p,$m,$s,$r,$dis));

Amicalement,
PDO::errorInfo(): PDO::errorCode():
Fatal error: Uncaught Error: Call to undefined method PDO::execute()

$connexion->execute(array($l,$t,$d,$pc,$p,$m,$s,$r,$dis));

Saloperie de ligne !!!!

Smiley bawling
Modifié par Tintin75 (23 Jan 2016 - 21:49)
Pages :