2009-08-06 15 views
-2

Je reçois cette erreur lorsque j'utilise ce code pour que les utilisateurs saisissent des données. Le formulaire de soumission ne sera pas listé parce que ce n'est pas utile dans cette circonstance:L'argument fourni n'est pas une ressource de résultat MySQL valide?

function some_more_custom_content() { 

    $output="<BR>"; 

    ob_start(); 

    if ($_REQUEST['code'] != "") { 
     $code = $_REQUEST['code']; 
     $query="INSERT INTO `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now())"; 
     $result=mysql_query($query); 

     while ($fetch_array = mysql_fetch_array($result)) { 
      $seconds = time() - strtotime($fetch_array["datetime"]); 

      if ((time() - $entry['datetime']) < 60*60) { 
       echo ("The code " . htmlentities($code) ." was updated less than an hour ago."); 
      } else { 
       echo ("Inserted " . htmlentities($code) ." into the top."); 
      } 
     } 
    } 

Une idée pourquoi?

+0

Commentaire de meilleure pratique au hasard: Lorsque vous utilisez des instructions "echo", ne concattez pas votre chaîne. Utilisez des virgules au lieu de périodes. La fonction echo peut prendre plusieurs chaînes comme arguments. Exemple: echo ("Inséré", htmlentities ($ code), "en haut".) Cela accélère le temps d'exécution. – Mark

Répondre

4

INSERT Les instructions ne renvoient pas de ressource, elles renvoient TRUE en cas de succès ou FALSE en cas d'échec. Il n'y a donc aucune ressource sur laquelle opérer mysql_fetch_array().

(Ceci est l'une des principales raisons pour lesquelles les gens se plaignent de PHP -. Sa sémantique ne sont pas conformes au mieux)

+0

Alors, comment puis-je le réparer et le rendre plus propre? –

+0

Eh bien, d'abord, qu'est-ce que vous essayez de faire avec ce bloc? Si vous voulez juste savoir si l'insertion a réussi ou échoué, la réponse du désintégrateur ci-dessous en prendra soin. –

+0

Je suis d'accord qu'il existe des incohérences dans PHP, mais dans ce cas? Quel genre de ressource (utile) mysql_query() doit-elle renvoyer pour une opération INSERT? – VolkerK

2

Ajouter à Meredith réponse. Vous shoul utilisez

if($result!==FALSE) { 
    // the insert was ok 
} else { 
    //the inser failed 
} 
0

changement:

$result=mysql_query($query); 

avec:

$result=mysql_query($query) or die(mysql_error()); 

vous verrez l'erreur.

Questions connexes