Problème lors de l'insertion dans une base de données (sql)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème lors de l'insertion dans une base de données (sql)

par tom572007 » 01 mars 2006, 15:03

Merci, pour cette proposition Truc, ça marche parfaitement, c'était la solution. :D :D :D
Merci pour votre aide à tous ;)

par Truc » 28 févr. 2006, 14:53

il y a une erreur de concaténation, manque des points:
$matiere->query='INSERT INTO `matieres` (`id_mat` , `nom_mat` , `nb_cours`) VALUES ('.$id_mat.',"'.$nom_mat.'",'.$nb_cours.') ';
verifis si les variables sont bien renseignées et ajouter des guillemets " pour les champs de type "char", comme "$nom_mat" très certainement.

par Invité » 28 févr. 2006, 13:24

Voici ce que contient la variable query avant l'éxecution de la requête:
INSERT INTO `matieres` (`id_mat` , `nom_mat` , `nb_cours`) VALUES ($id_mat,$nom_mat,$nb_cours)

par Cyrano » 27 févr. 2006, 21:19

Fais afficher la requête générée et colle ça ici qu'on voit si on détecte une erreur.

Problème lors de l'insertion dans une base de données (sql)

par tom572007 » 27 févr. 2006, 19:16

Bonjour, j'ai un problème d'insertion dans une base. Il y a apperemment une erreur de requête sql (c'est la que j'ai un message d'erreur)
J'utilise cette classe BDD pour toutes mes opérations sur base de données:
<?php 
class BDD { 

private $id_conn; 
private $serveur; 
private $user; 
private $mdp; 
private $nombase; 
private $result; 
public $row; 
public $numrows; 
public $query; 


function __construct($serveur='localhost', $user='root', $mdp='', $nombase='edt') { 
$this->serveur=$serveur; 
$this->user=$user; 
$this->mdp=$mdp; 
$this->nombase=$nombase; 
$this->row=array(); 
} 

function connection() { 
$this->id_conn=mysql_connect($this->serveur, $this->user, $this->mdp) 
or die('Erreur connexion serveur!'); 

mysql_select_db($this->nombase, $this->id_conn) 
or die("Erreur selection BdD!"); 

return ($this->requete()); 
} 

function requete() { 
$this->result=mysql_query($this->query) 
or die("erreur SQL!"); 
$i=0; 
while($this->row[$i]=mysql_fetch_array($this->result, MYSQL_BOTH)) { 
$i++; 
} 
$this->numrows=mysql_num_rows($this->result); 
mysql_free_result($this->result); 
return ($this->row); 
} 
} 
Puis j'effectue le code suivant dans le prog principal:
<?php 
include('classes2.php'); 
$nom_mat=$_POST['nom_mat']; 
$id_mat=$_POST['id_mat']; 
$nb_cours=$_POST['nb_cours']; 

$matiere=new BDD('localhost', 'root', '', 'edt'); //initialisation 
$matiere->connection(); //connection 

$matiere->query='INSERT INTO `matieres` (`id_mat` , `nom_mat` , `nb_cours`) VALUES ('$id_mat','$nom_mat','$nb_cours') '; //enregistrement de la requete 

$matiere->requete(); //éxecution de la requete 
?> 
Et il me die "erreur sql", pourtant la requête s'execute bien quand je la teste avec phpmyadmin. La variable query de ma classe n'est pas vide.
Y a-t-il un problème das ma fonction requete(qui est plutot destinée au départ à extraire des infos de la base de données)? Auriez vous d'autres solutions à me proposer??


Peut être ai-je fait une erreur assez grossière que vous pourrez m'aider à résoudre, sinon, je ne vois pas de solution apparente...
merci par avance.