problème mysql_fetch_array

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 mysql_fetch_array

lil

par lilemy » 20 mars 2007, 13:04

oui g remplacer

par Ryle » 20 mars 2007, 13:02

Affiche la requête générée et teste la sous MySQL ou phpMyAdmin :)

ou alors, utilise la fonction mysql_error() pour voir s'il n'y a pas un message d'erreur :
$retour2 = mysql_query($sql) or die(mysql_error());

As-tu remplacé mes '...' par les noms de tes champs ? ;)

lilemy

par lilemy » 20 mars 2007, 12:46

j'ai mis ton moreau de code
et j'ai toujours la même erreur

par Ryle » 20 mars 2007, 12:27

Le problème EST lié à un soucis d'espace entre la valeur et le AND et à l'absence de parenthèse fermante dans la sous requête. En revanche, il ne faut utiliser d'apostrophes en SQL qu'autour des dates et des chaines de caractère. Pour un nombre (tel un id) il ne faut surtout pas en mettre, même si MySQL les tolères :)

$sql = "SELECT ... FROM test 
  WHERE id_test<" . $_GET['monter_test'] . " 
  AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<" .$_GET['monter_test'].")";

$retour2 = mysql_query($sql);

par DocType » 20 mars 2007, 12:15

Code : Tout sélectionner

$retour2 = mysql_query('SELECT * FROM test WHERE id_test<' . $_GET['monter_test'] . 'AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<' .$_GET['monter_test']);
Essaie plutôt :

Code : Tout sélectionner

$retour2 = mysql_query("SELECT * FROM test WHERE id_test<'".$_GET['monter_test']."' AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<'".$_GET['monter_test'])."'";

problème mysql_fetch_array

par lilemy » 20 mars 2007, 12:10

bonjour,
j'ai un problème avec un morceau de mon code PHP
celui-ci me met une erreur au deuxième mysql_fetch_array et je ne comprend pas pourquoi
En gros se que je veux faire avec ce code est d'echanger le contenu de deux enregistrement. id_test recoi les infos de id_test2 et vice versa.
merci d'avance

Code : Tout sélectionner

if (isset($_GET['monter_test'])) { $retour = mysql_query('SELECT * FROM test WHERE id_test=' . $_GET['monter_test']); $donnees = mysql_fetch_array($retour); $photo_test = $donnees['photo_test']; $description_test = $donnees['description_test']; $id_test_test = $donnees['id_test']; $retour2 = mysql_query('SELECT * FROM test WHERE id_test<' . $_GET['monter_test'] . 'AND id_test IN (SELECT max(id_test) FROM test WHERE id_test<' .$_GET['monter_test']); $donnees2 = mysql_fetch_array($retour2); $photo_test2 = $donnees2['photo_test']; $description_test2 = $donnees2['description_test']; $id_test_test2 = $donnees2['id_test']; mysql_query ("UPDATE test SET photo_test='" . $photo_test2 . "', description_test='" . $description_test2 . "' WHERE id_test=" . $_GET['monter_test']); mysql_query ("UPDATE test SET photo_test='" . $photo_test . "', description_test='" . $description_test . "' WHERE id_test= '". $id_test_test2 . "'"); }