mysql_fetch_array() expects parameter 1 to be resource

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 : mysql_fetch_array() expects parameter 1 to be resource

Re: mysql_fetch_array() expects parameter 1 to be resource

par Ryle » 09 juin 2014, 19:28

Le message d'erreur indique que tu passes le mauvais format de variable à la fonction mysql_fetch_array() dans ton script modifier1.php.

La fonction attends une ressource sql, alors qu'il reçoit un booléen. Cela veut dire que $requete contient un booléen au lieu du résultat de la requête. D'après la doc, cela se produit quand une erreur survient.

Tu peux afficher la requête exécutée avec un simple echo $sql; tu verras alors si elle est bien construite, tu pourras même l'exécuter dans phpMyAdmin pour voir ce qui cloche. Tu peux aussi ajouter un mysql_error() après l'exécution de la requête pour savoir ce qui ne va pas dans ta requête SQL.

Est-ce que $_GET['numero'] contient bien un nombre ? (est-ce que la variable numero est bien passée dans l'url quand tu ouvre cette page ?


@Elie : les apostrophes servent à délimiter les chaines de caractères en SQL, il ne faut pas les utiliser pour délimiter des valeur numériques (int, tinyint, float, ...). Certains SGBD tolèrent les apostrophes autour des nombres (comme MySQL), mais ce n'est pas le cas de tous. Alors autant adopter les bonnes pratiques dès le début, cela évite de passer du temps à comprendre pourquoi ça ne fonctionne plus le jour ou tu dois travailler sur un autre SGBD ;)

Re: Vraiment débutant

par Meryem » 09 juin 2014, 13:58

Merci d'abord pour votre aide :)
J'ai exécuté la requête mais ça m'affiché une page blanche dans le navigateur, vous avez une idée pourquoi ?

Re: Vraiment débutant

par Elie » 09 juin 2014, 13:23

On va afficher la raison de l'erreur ca sera plus simple :
//requête SQL:
$sql = "SELECT * FROM immobilisation WHERE numero = '".$numero."'" ; // Je serais toi, je mettrai la variable entre ' et '

//exécution de la requête:
$requete = mysql_query($sql) or die('Erreur MySQL : '.mysql_error()); // 
On en saura plus !

mysql_fetch_array() expects parameter 1 to be resource

par Meryem » 09 juin 2014, 12:05

Bonjour, je suis un débutant en php et j'ai un un projet.
S'il vous plait j'ai besoin de votre aide: j'ai un problème dans mon code php, code de modification on m'affiche une erreur et je ne sais ou est l'erreur, voila le code :
modifier1.php
<?php
include('connect.inc');
 $numero = $_GET["numero"] ;
 
  //requête SQL:
  $sql = "SELECT *
            FROM immobilisation
	    WHERE numero = ".$numero ;
 
  //exécution de la requête:
  $requete = mysql_query( $sql) ;
 
  //affichage des données:
  if( $row = mysql_fetch_array( $requete ) )
  {
  ?>
<form name="insertion" action="modification.php" method="POST">
  <input type="hidden" name="numero" value="<?php echo($numero) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>Numéro locomotive</td>
      <td><input type="text" name="numeroloco" value="<?php echo($row->numeroloco) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Date de réforme</td>
      <td><input type="text" name="datedereforme" value="<?php echo($row->datedereforme) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Lieu</td>
      <td><input type="text" name="lieu" value="<?php echo($row->lieu) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Date d'entrée</td>
      <td><input type="text" name="cdatedentree" value="<?php echo($row->datedentree) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Motif</td>
      <td><input type="text" name="motif" value="<?php echo($row->motif) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Opération</td>
      <td><input type="text" name="operation" value="<?php echo($row->operation) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Situation</td>
      <td><input type="text" name="situation" value="<?php echo($row->situation) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Date prévision</td>
      <td><input type="text" name="dateprevision" value="<?php echo($row->dateprevision) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Date de sortie</td>
      <td><input type="text" name="datedesortie" value="<?php echo($row->datedesortie) ;?>"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  }//fin if 
  ?>
modification.php
<?php
include('connect.inc');
  $numeroloco     = $_POST["numeroloco"] ;
  //prenom:
  $datedereforme = $_POST["datedereforme"] ;
  //adresse:
  $lieu = $_POST["lieu"] ;
  //code postal:
  $datedentree       = $_POST["datedentree"] ;
  //numéro de téléphone:
  $motif = $_POST["motif"] ;
  $operation = $_POST["operation"] ;
  $situation = $_POST["situation"] ;
  $dateprevision = $_POST["dateprevision"] ;
 $datedesortie = $_POST["datedesortie"] ;
  //récupération de l'identifiant de la personne:
  $numero    = $_POST["numero"] ;
 
  //création de la requête SQL:
  $sql = "UPDATE immobilisation
            SET numeroloco     = '$numeroloco', 
	          datedereforme    = '$datedereforme',
		  lieu  = '$lieu',
		  datedentree = '$datedentree',
		  motif = '$motif'
		  operation = '$operation'
		  situation = '$situation'
		  dateprevision = '$dateprevision'
		  datedesortie = '$datedesortie'
           WHERE numero = '$numero' " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql) or die( mysql_error() ) ;
 
 
  //affichage des résultats, pour savoir si la modification a marchée:
  if($requete)
  {
    echo("La modification à été correctement effectuée") ;
  }
  else
  {
    echo("La modification à échouée") ;
  }
?>
Voila l'erreur qu'on affiche :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Project\modifier1.php on line 16
Merci pour votre aide :)