Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmazione (https://www.hwupgrade.it/forum/forumdisplay.php?f=38)
-   -   [PHP + mysql] query vuota (https://www.hwupgrade.it/forum/showthread.php?t=1859122)


dany84 08-11-2008 10:31

[PHP + mysql] query vuota
 
Ciao a tutti,
sto usando php per eseguire delle query su un DB mysql.
Mi capita spesso di vedere che se la query eseguita risulta vuota (0 record), poi non mi è possibile utilizzare la variabile contenente il risultato della query in nessun modo.
Sarà un problema comune, ma nonostante i miei sforzi non ho trovato nulla in rete. :(
Quello che mi servirebbe fare è controllare con un if se la query è vuota e, se non lo è, stampare a video delle informazioni.
Ho provato ad usare mysql_num_rows(), ma mi ritorna questo errore:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in nomefile.php on line 116

stessa cosa se utilizzo il mysql_fetch_array() e la query è vuota:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in nomefile.php on line 119

Avevo anche provato a fare così:
Codice PHP:

$result mysql_query($myquery,$dbconn);
if (
$result) {
   echo 
"ciao";


dato che sul manuale php avevo letto che la funzione mysql_query() ritorna FALSE se la query non è valida.
Ma la query è valida, semplicemente non ha record.

Avete idea di cosa dovrei usare per controllare se la query è vuota o meno in modo da non richiamare la funzione mysql_fetch_array() e ritrovarmi l'errore sopra postato?

Grazie in anticipo :)

vizzz 08-11-2008 12:02

Codice:

$result = mysql_query($myquery,$dbconn);
$res_num = mysql_num_rows($result);
if ($res_num > 0)
  echo "risultati trovati ".$res_num;
else
    echo "nessun risultato trovato";

prova se così funziona

dany84 09-11-2008 20:39

Quote:

Originariamente inviato da vizzz (Messaggio 24923851)
prova se così funziona

purtroppo mi dà lo stesso identico errore sulla riga:

Codice PHP:

$res_num mysql_num_rows($result); 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in nomefile.php on line 118

:(

avastreg 11-11-2008 01:01

molto strano..

prova a postarci l'intero pezzo di codice, query inclusa e vediamo di capire il perchè :)

kk3z 11-11-2008 10:59

ma hai provato a fare
Codice:

$result = mysql_query($myquery,$dbconn);
if (!$result)
 echo mysql_error();

?

Sei sicuro di esserti connesso al database prima? Se hai una sola connessione ad un database puoi anche non usare $dbconn...

dany84 11-11-2008 11:07

Quote:

Originariamente inviato da avastreg (Messaggio 24961457)
molto strano..

prova a postarci l'intero pezzo di codice, query inclusa e vediamo di capire il perchè :)

Lo posterò stasera o domani sera, grazie :)

Quote:

Originariamente inviato da kk3z (Messaggio 24963664)
ma hai provato a fare
Codice:

$result = mysql_query($myquery,$dbconn);
if (!$result)
 echo mysql_error();

?

Sei sicuro di esserti connesso al database prima? Se hai una sola connessione ad un database puoi anche non usare $dbconn...

No, non ci ho provato, ma la connessione al database funziona, se inserisco dei record all'interno della tabella che mi interessa e faccio girare quel pezzo di codice con la query sulla tabella appena riempita, funziona. Dà errore solo se il recordcount della query è 0 :muro:
Comunque farò anche questa prova, vediamo che dice. :)

Ho una connessione sola cmq, ma mi dici che cambia specificare ogni volta o meno la connessione? Ci sono dei vantaggi/svantaggi?
Grazie :)

vizzz 11-11-2008 18:22

Quote:

Originariamente inviato da dany84 (Messaggio 24963804)
Ho una connessione sola cmq, ma mi dici che cambia specificare ogni volta o meno la connessione? Ci sono dei vantaggi/svantaggi?
Grazie :)

Specificare la connessione è necessario solo se nello stesso script (pagina) utilizzi più connessione al/ai database.
prova a postare la query e magari anche che versione di php e mysql stai utilizzando.

dany84 11-11-2008 20:48

Ragazzi ho trovato l'errore grazie alla funziona mysql_error() come mi avevate consigliato.
In pratica quando facevo la query direttamente da mysql funzionava correttamente in quanto la scrivevo io a mano, ma con php, dato che nel where avevo messo un po' di variabili, la stringa della query non risultava corretta, errori di sintassi insomma :doh:
Quindi funziona tutto ora.
Grazie dell'aiuto e scusate se vi ho fatto perder tempo :stordita:

net83it 20-02-2010 15:28

salve a tutti

anche io ho lo stesso problema. non riesco a far comparire un messaggio di errore se la query restituisce un risultato vuoto

questo è il codice

Codice:

$sql = "SELECT
pt.topic_id, pt.topic_title
FROM ". TOPICS_TABLE." pt
WHERE pt.topic_title like '$key'
ORDER BY pt.topic_id";

$db->sql_query($sql);
$result = $db->sql_query($sql);

if (mysql_num_rows($result) == 0 )
{
        trigger_error('NO_SEARCH_RESULTS');
}

while ($row = $db->sql_fetchrow($result))
{
  $template->assign_block_vars('cerca_list', array(
      'TOPIC_ID'              => $row['topic_id'],
      //'POST_ID'              => $row['post_id'],
      'TOPIC_TITLE'      => $row['topic_title'],
      'TOPIC_LINK'      => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't='.$row['topic_id']),
      //'POST_AUTHOR'      => $row['username'],
  ));
}

si tratta di una semplice query di ricerca all'interno di uno script phpbb3

grazie a tutti


Tutti gli orari sono GMT +1. Ora sono le: 10:05.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.