Problème d'insertion dans une base

Invité
Invité n'ayant pas de compte PHPfrance

27 févr. 2006, 19:02

G le même type d'erreur avec un pb d'insertion dans la base
J'utilise cette classe pour toutes mes opérations sur base de données:
PHP:
<?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:
<?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? 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...

Mammouth du PHP | 568 Messages

28 févr. 2006, 12:38

$matiere->query='INSERT INTO `matieres` (`id_mat` , `nom_mat` , `nb_cours`) VALUES ('$id_mat','$nom_mat','$nb_cours') '; //enregistrement de la requete
Personnellement, je mettrais la faute sur ces apostrophes entourant $id_mat, $nom_mat et $nb_cours qui correspondent à des fins de chaîne de caractères pour toi...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:18

Hé non, malheureusement ça ne change absolument rien

Mammouth du PHP | 568 Messages

28 févr. 2006, 13:21

Tu as quoi comme code maintenant ?
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 14:48

hé bien, j'ai testé sans les quotes, et avec des cotes inverses,mais toujours le même résultat

Petit nouveau ! | 4 Messages

01 mars 2006, 15:07

ok j'ai trouvé une solution grace à l'aide de Truc qui m'a proposé cette requête:
INSERT INTO `matieres` (`id_mat` , `nom_mat` , `nb_cours`) VALUES ("'.$id_mat.'","'.$nom_mat.'",'.$nb_cours.') 
Et celle-ci fonctionne parfaitement; Je vous remercie tous pour votre soutien et votre aide; :D :) :o

A bientot ;)