not a valid MySQL result resource

 Quando quetsa pagina è scritta così

<?php

include("connection.php");

$userID=$_GET["pp"];

 $sqlString = "SELECT cart_id,  cart_quantity  FROM cart WHERE cart_userID= '$userID'";

   $res=mysql_query($sqlString,$con);

  while($cart = mysql_fetch_array($res)){

  $c=$cart['cart_id'];

  $newQ =$_GET["pq".$c];

echo $c.' '.$newQ.'<br>';

  }

?>

 restiutisce

49 3 -- dove 49 è l'id del prodotto e 49 la quantità

50 6 -- dove 50 è l'id del prodotto e 6 la quantità

 quidi i dati che mi interessano arrivano correttamente ma se vado ad aggiornare con questi dati il db

e modifico una parte del codice così

 while($cart = mysql_fetch_array($res)){

  $c=$cart['cart_id'];

  $newQ =$_GET["pq".$c];

 $sql2="update cart Set cart_quantity ='$newQ' where cart_userID='$userID' and cart_id='$c";

$res=mysql_query($sql2,$con);  

 ricevo un errore che mi dice che l'errore è nella restituzione dei valori di $cart = mysql_fetch_array($res))

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

perchè prima $cart funziona e poi no  ? capirei se l'errore fosse in $sql2 ma non in $cart. Sto impazzendo ho provato in tutte le maniere ma non esco da questo buco.  >:(

inviato 10 anni fa
kikuz
X 0 X

E invece è facilmente spiegabile! Quando effettui la prima query il PHP memorizza tutti i risultati ottenuti nella sua memoria. Ad ogni chiamata dell'istruzione mysql_fetch_array si prende un risultato, lo si impacchetta opportunamente in un array, e lo si assegna ad una variabile. L'istruzione mysql_fetch_array sa dove sono conservati tutti i risultati perché gli viene fornita la variabile $res, ottenuta con la query. Quindi è grazie a $res che mysql_fetch_array riesce ad estrarre i risultati.

Quando effettui la seconda query commetti un errore: utilizzi nuovamente la variabile $res per conservare il valore restituito dalla query. Questo causa 2 problemi: 1) i vecchi risultati della prima query diventano irraggiungibili poiché il valore contenuto nella variabile $res ora è stato sovrascritto, 2) poiché la seconda query non è una SELECT come la prima bensì una UPDATE, $res non è un "MySQL result resource" ovvero una variabile che punta a dei record da estrarre con mysql_fetch_array, ma si tratta di una semplice variabile che ti dice se la query è andata a buon fine.

Per risolvere il problema dovrebbe essere sufficiente usare un'altra variabile al posto di $res nella seconda query.

 :bye:

P.S.: discussione spostata e rinominato perché non conforme al regolamento

risposto 10 anni fa
Gianni Tomasicchio
modificato 10 anni fa
X 0 X

chiedo scusa per il titolo in effetti ho bagliato. Ti voglio ringrazziare veramente perchè sei la prima persona che capisce cosa chiedevo al contraro di altri che me ne hanno dette di ..... Proverà subito ma credo sia proprio la soluzione giusta. Grazie mi fai ancora credere che le persone sappiano ascoltare. Grazie.

risposto 10 anni fa
kikuz
X 0 X

confermo corretto il nome tutto ok !!!!!!!!!!!!! Dopo una settimana che lo sognavo anche di notte, stasera riposerò sereno. Grazie

risposto 10 anni fa
kikuz
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda