Requete sql avec php

ce__l
Invité n'ayant pas de compte PHPfrance

18 sept. 2008, 11:31

Bonjour,
Je rame avec l'insertion de variables dans plusieurs tables. Soit j'ai une erreur soit je n'ai qu'une insertion sur les deux tables.

Voici mon code:
$sql = "INSERT INTO test (nom_test, pays_test, date_debut, date_fin)
VALUES ('$nom','$pays_test','$date','$date2')" ; 

$sql = "INSERT INTO model (nom_model, images) VALUES ('$nom_model1','$image_model1')"; 

$requete = mysql_query($sql, $connect) or die( mysql_error() ) ;
Merci de votre aide
ce_l

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

18 sept. 2008, 11:43

  1. Toujours extraire les variables des chaînes (aide-toi de la coloration syntaxique)
  2. Une variable placée entre deux apostrophes ne sera pas interprêtée
  3. Différencier les noms des requêtes
  4. date est un nom réservé (mieux vaut utiliser $date1, par exemple)
Try this :
$sql_01 = "INSERT INTO test (nom_test, pays_test, date_debut, date_fin)
           VALUES ('".$nom."','".$pays_test."','".$date1."','".$date2."')" ; 

$sql_02 = "INSERT INTO model (nom_model, images)
           VALUES ('".$nom_model1."','".$image_model1."')";

Invité
Invité n'ayant pas de compte PHPfrance

18 sept. 2008, 12:07

Hello,
Merci de ta réponse,

J'ai l'erreur :

Warning: Wrong parameter count for mysql_query() in C:\Program Files\EasyPHP 2.0b1\www\test Provea1\admin\admin_test2.php on line 371

Qu'est ce que j'ai fait faux :
$requete = mysql_query($sql_01, $sql_02, $connect) or die( mysql_error() ) ;
ce_l

Eléphanteau du PHP | 17 Messages

18 sept. 2008, 12:26

tu ne peut envoyer qu'une seule requette avec mysql_query

essaye un truc du genre

Code : Tout sélectionner

$requete = mysql_query($sql_01, $connect) or die( mysql_error() ) ; $requete2 = mysql_query($sql_02, $connect) or die( mysql_error() ) ;
si j'ai bien compris ce que tu voulait faire

Eléphant du PHP | 422 Messages

18 sept. 2008, 12:31

1. Toujours extraire les variables des chaînes (aide-toi de la coloration syntaxique)

2. Une variable placée entre deux apostrophes ne sera pas interprêtée

3. Différencier les noms des requêtes

4. date est un nom réservé (mieux vaut utiliser $date1, par exemple)
1. Pas forcément.
2. Bien sûr que si si la chaîne est -comme là- placée entre double quotes
3. Si elles sont préparées d'abord, et exécutée ensuite. Sinon pas forcément
4. date oui. Mais $date n'est pas un nom réservé

Pour en revenir au problème, si tu veux que les deux requêtes s'exécutent
$sql = "INSERT INTO test (nom_test, pays_test, date_debut, date_fin) 
VALUES ('$nom','$pays_test','$date','$date2')" ;  
$requete = mysql_query($sql, $connect) or die( mysql_error() ) ;

$sql = "INSERT INTO model (nom_model, images) VALUES ('$nom_model1','$image_model1')";  
$requete = mysql_query($sql, $connect) or die( mysql_error() ) ;

Enfin, pour voir ce qui cloche, fais des echo $sql que tu copieras/colleras dans phpmyadmin.
Et pense à gérer la présence d'apostrophes dans les chaînes de caractères.

ce__l
Invité n'ayant pas de compte PHPfrance

18 sept. 2008, 13:15

Hello
La solution de Carouge fonctionne parfaitement, il me reste plus qu'a comprendre cmment et pourquoi...
Merci tous les 2 d'avoir réflechi sur mon problème.