Page 1 sur 1

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

Posté : 27 févr. 2006, 19:16
par tom572007
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.

Posté : 27 févr. 2006, 21:19
par Cyrano
Fais afficher la requête générée et colle ça ici qu'on voit si on détecte une erreur.

Posté : 28 févr. 2006, 13:24
par Invité
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)

Posté : 28 févr. 2006, 14:53
par Truc
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.

Posté : 01 mars 2006, 15:03
par tom572007
Merci, pour cette proposition Truc, ça marche parfaitement, c'était la solution. :D :D :D
Merci pour votre aide à tous ;)