PDA

View Full Version : [PHP + mysql] query vuota


dany84
08-11-2008, 09:31
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ì:

$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, 11:02
$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, 19:39
prova se così funziona
purtroppo mi dà lo stesso identico errore sulla riga:


$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, 00:01
molto strano..

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

kk3z
11-11-2008, 09:59
ma hai provato a fare
$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, 10:07
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 :)

ma hai provato a fare
$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, 17:22
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, 19: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, 14: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

$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