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

Petit nouveau ! | 4 Messages

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.

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

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)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 4 Messages

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 ;)