Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    153

    uso di mysql_num_rows()

    Quacuno conosce esattamente il funzionamento della funzione mysql_num_rows() di php? Perchè io ho la necessità di contare quanti valori di uno stesso tipo sono contenuti in una tabella, così ho scritto una funzione di questo tipo:

    <?php

    $connessione = mysql_connect("localhost", "utente_mysql", "password_mysql");
    mysql_select_db("database", $connessione);

    $risultato = mysql_query("SELECT nome FROM tabella1 WHERE nome = '$username'", $connessione);
    $num_righe = mysql_num_rows($risultato);

    echo "$num_righe Righe\n";

    ?>

    e così facendo funziona meravigliosamente. Tuttativa io ho bisogno che lo stesso conteggio me lo faccia su più di una tabella, così ho modificato la query al database in questo modo:

    SELECT nome FROM tabella1, tabella2, tabella3 WHERE nome = '$username'"

    solo che a quel punto la funzione myswl_num_rows() non funziona più e mi viene restituito un warning. Qualcuno sa spiegarmi meglio questo fatto?

  2. #2

    Re: uso di mysql_num_rows()

    Originariamente inviato da danny21
    Quacuno conosce esattamente il funzionamento della funzione mysql_num_rows() di php? Perchè io ho la necessità di contare quanti valori di uno stesso tipo sono contenuti in una tabella, così ho scritto una funzione di questo tipo:

    <?php

    $connessione = mysql_connect("localhost", "utente_mysql", "password_mysql");
    mysql_select_db("database", $connessione);

    $risultato = mysql_query("SELECT nome FROM tabella1 WHERE nome = '$username'", $connessione);
    $num_righe = mysql_num_rows($risultato);

    echo "$num_righe Righe\n";

    ?>

    e così facendo funziona meravigliosamente. Tuttativa io ho bisogno che lo stesso conteggio me lo faccia su più di una tabella, così ho modificato la query al database in questo modo:

    SELECT nome FROM tabella1, tabella2, tabella3 WHERE nome = '$username'"

    solo che a quel punto la funzione myswl_num_rows() non funziona più e mi viene restituito un warning. Qualcuno sa spiegarmi meglio questo fatto?
    hai una colonna nome in tutte e tre le tabelle?

    devi specificare quale vuoi, altrimenti va in conflitto!

    quando esegui la query usa la notazione dell'errore così capisci dove stai sbagliando.

    quindi

    codice:
    $res = mysql_query($query)or die(mysql_error());


    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    153
    Sì, il campo nome è uguale in tutte le tabelle ho anche provato a modificare il select mettendo "SELECT nome.tabella1, nome.tabella2, nome.tabella3" nella speranza che avesse meno problemi ma rimane uguale. Comunque il warning che mi compare è il seguente:


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

  4. #4
    Originariamente inviato da danny21
    Sì, il campo nome è uguale in tutte le tabelle ho anche provato a modificare il select mettendo "SELECT nome.tabella1, nome.tabella2, nome.tabella3" nella speranza che avesse meno problemi ma rimane uguale. Comunque il warning che mi compare è il seguente:


    Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource
    perché sbagli la sintassi, devi fare nome_tabella.nome_campo NON nome_campo.nome_tabella come hai fatto tu. Poi il nome della tabella lo devi mettere soprattutto nel WHERE, nella select puoi anche tralasciarlo! lo puoi mettere se vuoi crearti degli alias, che userai poi nella clausola WHERE; ad esempio:

    codice:
    SELECT tabella1.nome AS nome_tab1, tabella2.nome AS nome_tab2 FROM tabella1, tabella 2 WHERE nome_tab1 = 'pippo'
    un'occhiatina al manuale per vedere la sintassi non fa di certo male: http://dev.mysql.com/doc/mysql/en/select.html









    p.s. vedo che non hai usato la notazione dell'errore come ti è stato suggerito, altrimenti avresti capito il tipo d'errore, i suggerimenti vengono dati per aiutare, poi ognuno è libero di seguirli o meno...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    153
    Sì, ma in realtà non dovrebbe essere necessario questo per il semplice fatto che avendo tutte le tabelle il campo con lo stesso nome dovrebbe semplicemente funzionare il select nome from "tutte le tabelle che voglio", eppure in qualsiasi modo lo metto mi salta fuori sempre la stessa cosa. Anche nel where ho provato ad inserire i vari nomi delle tabelle e non è cambiato nulla. Lui deve solo dirmi quante volte compare quel nome all'interno di una serie di tabelle, non mi sembrava così complicato.

    p.s. vedo che non hai usato la notazione dell'errore come ti è stato suggerito, altrimenti avresti capito il tipo d'errore, i suggerimenti vengono dati per aiutare, poi ognuno è libero di seguirli o meno...
    Allora, non ho ancora avuto tempo di modificare il file, ti ho solo riportato il messaggio che compariva quando ho scritto il primo post. Quando ci rimetterò mano farò tutte le prove del caso.

  6. #6
    Originariamente inviato da danny21
    Sì, ma in realtà non dovrebbe essere necessario questo per il semplice fatto che avendo tutte le tabelle il campo con lo stesso nome dovrebbe semplicemente funzionare il select nome from "tutte le tabelle che voglio", eppure in qualsiasi modo lo metto mi salta fuori sempre la stessa cosa. Anche nel where ho provato ad inserire i vari nomi delle tabelle e non è cambiato nulla. Lui deve solo dirmi quante volte compare quel nome all'interno di una serie di tabelle, non mi sembrava così complicato.
    se la select la fai da 3 tabelle e tutte queste tabelle hanno un campo con lo stesso nome poi nella clausola where DEVI specificare sia campo che tabella! altrimenti mysql non può inventarsi quale campo andare a prendere. Puoi ometterelo all'inizio ma nel where lo devi mettere:

    SELECT * FROM tabella1, tabella2, tabella3 WHERE tabella1.nome = 'pippo' AND tabella2.nome = 'paperino'

    Allora, non ho ancora avuto tempo di modificare il file, ti ho solo riportato il messaggio che compariva quando ho scritto il primo post. Quando ci rimetterò mano farò tutte le prove del caso.

    da come parlavi sembrava proprio che il file tu lo avessi modificato...anche perché tu stesso hai detto che hai modificato la select ma che ti dava ancora il messaggio d'errore
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    153
    da come parlavi sembrava proprio che il file tu lo avessi modificato...anche perché tu stesso hai detto che hai modificato la select ma che ti dava ancora il messaggio d'errore
    Sì, ho modificato la select in uno dei tentativi fatti prima di postare il primo messaggio, ma dopo non l'ho più modificato.

    Adesso proverò a specificare la tabella nel WHERE anche se essendo il campo uguale in tutte le tabelle pensavo che anche nel WHERE fosse sufficiente indicare solo il valore del campo visto che rimanevano entrambi costanti (sia il valore che il nome del campo).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.