PDA

View Full Version : [PHP] mysql_num_rows(): supplied argument is not a valid MySQL result resource


Argosoft
08-06-2004, 14:07
:cry: niente da fare! quando l'sql si impunta diveta peggio del c++!! non ci si cava un ragno dal buco!

ma che ha di male questa stringaa????? :cry:

"SELECT * FROM downloads,users WHERE ((downloads.language = '".$lang."' OR downloads.language = '*') AND (downloads.type='".$downType."') AND (users.id_user = downloads.id_submitter)) ORDER BY downloads.id_download DESC"

lo scopo della stringa:
ci sono 2 tabelle, users e downloads, così composte:

tabella downloads:
id_download int(10) UNSIGNED auto_increment <-- chiave primaria
id_submitter int(10) UNSIGNED
language char(2) No
type varchar(10) No
title varchar(30) No
text blob BINARY Si
path varchar(150) No
snapPath varchar(150) Si

tabella users:
id_user int(10) UNSIGNED No auto_increment <-- chiave primaria
nick varchar(25) No
password varchar(20) No
email varchar(100) No

(si o no indicano se il campo può essere Null)


Gli users possono postare dei downloads, quindi per ogni download c'è un campo che fa riferimento all'utente che lo ha postato. Lo scopo era di fare una join tra queste due tabelle, in modo da avere un record da cui tirare fuori una tabellina carina del tipo:

---------------------------------------------------
TITOLO DOWNLOAD - by NOME UTENTE

DESCRIZIONE DOWNLOAD

LINK
---------------------------------------------------

A delle condizioni però... Nel sito ho diviso la sezione downloads in tre parti: Programmi, Immagini, Varie. Nel database questi tipi sono rappresentati da 3 stringhe, "apps","imms","vars", contenuti nel campo downType. Inoltre, il sito è multilingua :) , quindi i records devono essere della lingua selezionata, oppure della lingua '*', che indica un download che può essere visualizzato da chiunque. Tutte queste informazioni sono passate com metodo GET, per esempio:

http://www..../downloads.php?lang=it&skin=blue&downtype=apps
oppure
http://www..../downloads.php?lang=en&skin=blue&downtype=imms

Io dunque devo tirare su un record composto,
SELECT * FROM downloads,users WHERE (
data la lingua desiderata,
(downloads.language = '".$lang."' OR downloads.language = '*')
e dato il tipo desiserato
AND (downloads.type='".$downType."')
coordinato per le chiavi primarie
AND (users.id_user = downloads.id_submitter))
e voglio i risultati ordinati in modo decrescente per id_download
ORDER BY downloads.id_download DESC"

non è perfetta?? :cry: :cry: eppure, quando vado a fare mysql_num_rows() per poter visualizzare tutti i downloads, mi dà quel dannato errore!!!!!! Il database non è vuoto, quidi il problema è qui... help non riesco proprio a capire che cos'ha!!!

ciao!

Fenomeno85
08-06-2004, 15:08
hai provato a usare join invece di fare in quel modo??

MEMBRO DEL GRAN CONSIGLIO DELLE CACCOLE VERDI

~§~ Sempre E Solo Lei ~§~

cionci
08-06-2004, 16:45
Puoi postare il pezzo di codice da quando apri il DB a quando hai il problema ?

Argosoft
08-06-2004, 20:15
Originariamente inviato da Fenomeno85
hai provato a usare join invece di fare in quel modo??

MEMBRO DEL GRAN CONSIGLIO DELLE CACCOLE VERDI

~§~ Sempre E Solo Lei ~§~

o_O ehm? :eek:

voila il pezzo di codice:


<?php
$lang = $_GET["lang"];
$skin = $_GET["skin"];
$downType = $_GET["downtype"];
......
...... //qui scrivo una tabellina per scegliere il tipo del download
......

$connessione = mysql_connect("localhost","argosof_") or die("<center><font size=+2 face=tahoma color=white>;_; connessione non riuscita !!</font></center>"); //devo specificare l'utente argosof_ a causa di una stranezza :) in pratica a tutti gli utenti viene aggiunto il prefisso argosof_ , quindi l'utente qualsiasi ha come nome argosof_
mysql_select_db("argosof_data");
$downs = mysql_query("SELECT * FROM downloads,users WHERE ((downloads.language = '".$lang."' OR downloads.language = '*') AND (downloads.type='".$downType."')) ORDER BY downloads.id_download DESC");
mysql_close();
$num_downs = mysql_num_rows($downs);
if($num_downs == 0 && $downType != NULL) //è per un caso particolare
echo("<br><br><font color=white size=+1>".$nodowns."</font>");

for($i=0; $i < $num_downs; $i++){
//disegna sito
$down = mysql_fetch_array($downs);
?>

---qui c'è una tabella vuota con vari <? echo $... ?> che compone tutta la pagina

<?php
}
?>


niente da fà :boh:

cionci
08-06-2004, 22:02
Sembra che fallisca prima di arrivare a fare la query...

Argosoft
08-06-2004, 22:40
ma la query la fa, je pijasse........ solo che dentro a $downs non ci va a finire niente, e così all'istruzione mysql_num_rows salta tuttoo! :muro:

ma il brutto sai qual è??? se faccio la query da phpMyAdmin la roba me la tira fuori st'infame!!!!!!!!!!!!!!!!!!!!!!!!!! che putrido vigliacco!!!!!!!!!!! :mad:

cionci
08-06-2004, 22:45
Metti:

echo mysql_error();

Dopo ogni chiamata ad una funzioendi mysql...
Magari c'è un'errore nella select...

Fenomeno85
09-06-2004, 06:45
fai un'altra cosa invece del for (se sei sicuro che la query è giusta)

metti così:

while ($riga = mysql_fetch_array($downs, MYSQL_ASSOC)){
…operazioni…
}

MEMBRO DEL GRAN CONSIGLIO DELLE CACCOLE VERDI

~§~ Sempre E Solo Lei ~§~

Argosoft
09-06-2004, 09:43
okk thanks! provo subito!

Argosoft
09-06-2004, 09:50
OH YES !!!!

Fenomenooooo!!!!!!!! (85)! :D ma che perché che diavolo ma perché cacchio non funziona la mysql_num_rows? eppure su un'altra pagina la uso allo stesso modo e non dà problemi! evvabeneeeee....

:cincin: :cincin: thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

cionci
09-06-2004, 11:47
Originariamente inviato da Argosoft
[ ma che perché che diavolo ma perché cacchio non funziona la mysql_num_rows?
Me lo domando anche io...

Fenomeno85
09-06-2004, 15:47
non lo so ma io uso sempre questo metodo e, non mi ha mai creato problemi. :D

~§~ Sempre E Solo Lei ~§~

cionci
09-06-2004, 16:03
Anche io faccio come fai te...ma ciò non toglie che mysql_num_rows debba ritornare il numero di risultati...

Fenomeno85
09-06-2004, 16:29
si mysql_num_rows restituirà il valore di ennuple.

Prova a mettere dopo questa istruzione un echo e vedi che cosa ti da.

~§~ Sempre E Solo Lei ~§~

Buffon
09-06-2004, 19:12
Entrando in diversi forum mi accorgo dell'immensita del mondo della programmazione: Ma quanti linguaggi di programmazione esistono????!!!!!!!:eek: :eek: :eek: :eek: :confused: :confused: :confused: :confused:

Argosoft
09-06-2004, 22:12
non userò mai più quella dannata istruzione :D ma, infatti è abbastanza inspiegabile....

evvabè

buonanotte!

:) thanks

Fenomeno85
10-06-2004, 06:57
hai provato a vedere cosa restituisce la funzione rows? così per curiosità :)

~§~ Sempre E Solo Lei ~§~