Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [classi php/query MySql] query eseguita da metodo non funziona

    Ciao..ho guardato un pò in giro sul forum ma credo di non aver trovato questo argomento..questo lo apro ora. Comunque passo al dunque.
    Praticamente ho creato un metodo contenuto in una classe che, ricevuti il campo e la chiave primaria della tabella, mi restituisce il valore trovato in quel campo. Quindi io invio a questo metodo 2 valori. All'interno del metodo la query viene eseguita(almeno credo) correttamente. Il problema e che, dopo avere ricavato il valore tramite un mysql_fetch_array() , ritorno il valore della variabile(es. $miavariabile[0]) tramite un return(es. return $miavariabile[0]; ) e invece di ricevere il valore del campo, ricevo il valore della variabile contenente il nome del campo che io invio inizialmente. Eppure i nomi delle 2 variabili sono totalmente diversi! Ho provato in vari modi ma non sto proprio capendo da cosa dipenda..
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

  2. #2

  3. #3
    function dati($id,$campo){ // ricava dati utenti $verifica = mysql_num_rows($dato = mysql_query("SELECT '".$campo."' FROM iscritti WHERE id = '".$id."'")); if($campo=='nick' and $verifica!=1){ $verifica = mysql_num_rows($dato = mysql_query("SELECT email FROM iscritti WHERE id = '".$id."'")); } if($verifica>0){ $contenuto = mysql_fetch_array($dato); return $contenuto[0]; } }
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

  4. #4
    hai messo il nome del campo tra virgolette, di conseguenza la query ti viene
    select 'campo' from iscritti where ecc.
    invece devi fare
    select campo from iscritti where ecc.

    consiglio: hai scritto un sacco di query inutili

    in effetti non capisco perchè debba prima fare la query, poi se non esiste alcun dato (suppongo che id sia primary key, quindi non ci possono essere dati doppi) e stavi cercando l'email, va a cercare il nick
    chiaramente se non ci sono righe con id = $id prima non ci sono neanche dopo (a meno di un caso fortuito per cui la riga viene scritta in quel mezzo secondo che intercorre tra le due query)

    di conseguenza riscrivi il codice così:

    Codice PHP:
    function dato($campo,$id) {
        global 
    $mysql_connection;
        if(
    $campo == 'nick') {
             
    $campo 'email';
        }
        
    $dato mysql_query("select ".$campo." from iscritti where id = ".$id." ;",$mysql_connection);
        
    $num_rows mysql_num_rows($dato);
        if(
    $num_rows 0) {
            
    $valore mysql_fetch_row($dato);
            return 
    $valore[0];
        }
         return 
    false;

    indicazioni stilistiche:
    1) è sempre bene usare la variabile di connessione, piuttosto che l'ultima connessione usata, caso mai avessi in futuro bisogno di due connessioni (magari a due db diversi)
    2) mysql_fetch_row e mysql_fetch_assoc sono più efficenti di mysql_fetch_array quando si usa un solo metodo di accesso ai dati (array numerico o associativo)
    Armageddon - Chief Developer

    Stiamo cercando collaboratori!

  5. #5
    Allora, intanto ti ringrazio per la risposta..ora passo al codice:
    1) la query mi funziona sia che scrivo "SELECT ".$campo." FROM..." e sia "SELECT '".$campo."' FROM...";
    2)non faccio il controllo sull'id, ma controllo se esiste il nick, perché altrimenti prendo l'email.
    3)se mi puoi aiutare ad usare meno query te ne sarei grato perché riconosco di non esser tanto sintetico nella stesura del codice..
    4)poi non mi funzionano nemmeno altre query più semplici..o meglio la query la fa, ma non mi restituisce il risultato..
    Se riesci ad aiutarmi a capire il problema te ne sarei veramente grato perché se non risolto questo non posso andare avanti col sito..
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

  6. #6
    up up up
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

  7. #7

    Re: [classi php/query MySql] query eseguita da metodo non funziona

    Originariamente inviato da mancarius ...invece di ricevere il valore del campo, ricevo il valore della variabile contenente il nome del campo che io invio inizialmente. Eppure i nomi delle 2 variabili sono totalmente diversi!
    volevo precisare che in realtà non mi restituisce il nome del campo, ma la prima lettera del nome del campo. Quindi se in $campo c'è scritto 'nick' mi ritorna 'n'...sto diventando pazzo
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

  8. #8
    1) select campo from tbl

    recupera il valore di campo nella tabella tbl mentre

    select 'campo' from tbl

    recupera la stringa 'campo': devi usare i backticks (gli accenti), non gli apici singoli

    2) se non esiste un nick associato a quella id, non esiste nemmeno una email nella stessa tabella, quindi è inutile rieseguire la stessa query sulla stessa tabella con la stesso id, avresti lo stesso risultato
    nel caso nick sia NULL (che probabilmente è quello che intendi con nick non esistente), basta modificare la query così:

    select ifnull(nick,email,nick) as value from iscritti

    (questo lo esegui solo se $campo = 'nick', altrimenti fai la query normale)

    3) prova il codice che ti ho postato io (più pulito), poi dimmi
    Armageddon - Chief Developer

    Stiamo cercando collaboratori!

  9. #9
    Originariamente inviato da gcampa
    2) se non esiste un nick associato a quella id, non esiste nemmeno una email nella stessa tabella, quindi è inutile rieseguire la stessa query sulla stessa tabella con la stesso id, avresti lo stesso risultato
    nel caso nick sia NULL (che probabilmente è quello che intendi con nick non esistente), basta modificare la query così:

    select ifnull(nick,email,nick) as value from iscritti
    si..ora ho capito la stupidata che ho fatto!mi era proprio sfuggito che anche se nick è NULL comunque per la query il risultato è stato trovato..ora provo come dici tu..e ti faccio sapere..grazie ancora!
    ps: potresti spiegarmi un'attimo cosa fa lo script che mi hai dato? Non capisco perché nella parentesi passi come parametri 2 volte il nick.. :master:
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

  10. #10
    Benissimo! Eh uscito! grazie grazie e grazie! Ho corretto anche la funzione, probabilmente devi esserti confuso nello scriverla..vanno solo due valori..grazie ancora..ciao
    "Non pretendo di aver ragione,..ma quantomeno di esser preso in considerazione.."

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.