Requette insert

kacimo22 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
kacimo22 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -
bnj j'ai un brobleme avec ce code php ou la variable $id_ann recoit la valeur du dernier iD inseré

$bdd=new PDO('mysql:host=localhost;dbname=algerieservices','root','');
$reg=$bdd->prepare("INSERT INTO annonce VALUES('','$titre','$description','$montant','$id','$email','$telephone','$categorie','?',NOW(),'')");
$reg->execute();
$id_ann= $bdd->lastInsertId();
$reg4=$bdd->prepare("INSERT INTO image VALUES('','$id_ann','$nom_img','$chemin')");
$reg4->execute(array());

aidez moi svp de trouver l'erreur mrc.

2 réponses

  1. Atropa Messages postés 2051 Statut Membre 274
     
    Bonsoir,

    Je crois que tu n'as pas compris le principe des requêtes préparée !

    le but est de passer tes variables en tant que paramètres, pour préparer la logique de la requête et éviter les injections sql.

    Les doubles quotes avec variables sont a proscrire. Le temps d'exécution est bien plus lourd et le code est rendu illisible. la concaténation est à privilégier.

    Sur une requête INSERT il est préférable de préciser les champs que l'on insert.

    	$bdd=new PDO('mysql:host=localhost;dbname=algerieservices','root','');
    
    	$reg=$bdd->prepare('INSERT INTO annonce(
    								titre,
    								description,
    								montant,
    								id,
    								email,
    								telephone,
    								categorie,
    								symbole,
    								datetime
    							)
    							VALUES(
    								:titre,
    								:description,
    								:montant,
    								:id,
    								:email,
    								:telephone,
    								:categorie,
    								:symbole,
    								NOW())
    						)';
    	$values = array(
    			'titre' => $titre,
    			'description' => $description,
    			'montant' => $montant,
    			'id' => $id,
    			'email' => $email,
    			'telephone' => $telephone,
    			'categorie' => $categorie,
    			'symbole' => $symbole
    		)
    	$reg->execute($values);
    	$id_ann= $bdd->lastInsertId();
    	$reg4=$bdd->prepare('INSERT INTO image(id_ann,nom_img,chemin) VALUES(:id_ann,:nom_img,:chemin))';
    	$reg4->execute(array('id_ann' => $id_ann,'nom_img' => $nom_img,'chemin' => $chemin));
    0
  2. kacimo22 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
     
    merci Atropa c'est ça la solution merci beaucoup.
    0