Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    21

    MySql esegue la query ma in PHP non funziona

    Ciao a tutti, ho un problema con una query da eseguire in PHP, è una semplicissima SELECT però non so perché ma non funziona...

    il codice che eseguo è:
    Codice PHP:
    function queryDati($idCF$cf)
    {
       
    $QDati="SELECT * FROM idimag.".$cf." WHERE ID LIKE ".$idCF;
       echo(
    $QDati.'\n');
       
    $risQDati=mysql_query($QDati);
       echo !
    $risQDati;
       if(!
    $risQDati)
        echo(
    "Impossibile trovare i dati associati al ".$cf." richiesto, si prega di riprovare.".'\n');
       else
       {
        while (
    $rowDati=mysql_fetch_array($risQDati)) {​
         
    $arr=["cod"=>$rowDati['Cod'], "tel"=>$rowDati['Telefono'], "ref"=>$rowDati['Referente']];
         return 
    $arr;
        }
      }

    Il problema è che $risQDati è sempre Null...
    Piccola spiegazione delle variabili $idCF è l'ID di un record della tabella cliente o fornitore e $cf è la stringa è la scelta effettuata dall'utente (deve scegliere da una comboBox tra "fornitore" e "cliente").
    Controllando il primo "echo" la query sembrerebbe giusta, infatti è
    "SELECT * FROM cliente WHERE ID=22"
    "SELECT * FROM fornitore WHERE ID=132"
    Ho provato ad eseguire queste query, scritte nello stesso identico modo, in MySQL e mi mostra il record giusto, quindi perché in PHP mi da Null??

    Spero in un vostro aiuto.
    Ultima modifica di Lory1508; 30-07-2014 a 14:20

  2. #2
    Non mi sembra affatto che le query da te stampate siano generate dalla funzione postata dato che nel PHP hai:

    Codice PHP:
    $QDati="SELECT * FROM idimag.".$cf." WHERE ID LIKE ".$idCF

    mentre le presunte echo sono:

    SELECT * FROM cliente WHERE ID=22
    SELECT * FROM fornitore WHERE ID=132
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    21
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Non mi sembra affatto che le query da te stampate siano generate dalla funzione postata dato che nel PHP hai:

    Codice PHP:
    $QDati="SELECT * FROM idimag.".$cf." WHERE ID LIKE ".$idCF

    mentre le presunte echo sono:

    SELECT * FROM cliente WHERE ID=22
    SELECT * FROM fornitore WHERE ID=132
    Sì, scusa ho fatto confusione tra le varie prove, le select delle echo sono:

    SELECT * FROM idimag.cliente WHERE ID LIKE 22
    SELECT * FROM idimag.fornitore WHERE ID LIKE 132

    ho provato anche a mettere gli apici così

    SELECT * FROM idimag.cliente WHERE ID LIKE '22'
    SELECT * FROM idimag.fornitore WHERE ID LIKE '132'

    e così

    SELECT * FROM idimag.cliente WHERE ID='22'
    SELECT * FROM idimag.fornitore WHERE ID='132'

    ma il risultato è sempre lo stesso
    e come si nota dall'errato copia&incolla delle echo di prima ho provato anche a non indicare il nome del DB.

  4. #4
    Dov'è che stabilisci la connessione al DB?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    21
    nel file accesso.php che includo con la funzione include()
    Codice PHP:
    <form method="POST">
    <?php   
      
    include("accesso.php");
    ?>
    accesso.php
    Codice PHP:
    <?php   
     
    //Connessione, con segnalazione nel caso di fallimento
        
    $db mysql_connect("localhost","root","") or
         die(
    "Errore di connessione: ".mysql_error());
        
    //selezione DB: la funzione torna FALSE se fallisce
        
    if (!mysql_select_db("idimag",$db)) {
           die(
    "Errore select_db: ".mysql_error());
        }
    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    21
    Ho notato che se invece di
    Codice PHP:
    $risQDati=mysql_query($QDati); 
    scrivo
    Codice PHP:
    $risQDati=mysql_query($QDati,$db); 
    Non fa proprio nulla, non visualizza neanche le echo... può essere qui il problema? Però in tutte le altre pagine e in tutte le altre query funziona tutto benissimo... non capisco proprio cosa lo blocchi...

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Hai provato a :
    1 - a mettere un die(mysql_error()) dopo la query ?
    2 - eseguire il codice fuori dalla funzione ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    21
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Hai provato a :
    1 - a mettere un die(mysql_error()) dopo la query ?
    2 - eseguire il codice fuori dalla funzione ?
    Ciao, scusa la mia ignoranza ma sono ancora alle prime armi, ho riscritto la riga in questo modo
    Codice PHP:
    $risQDati=mysql_query($QDati) or die(mysql_error()); 
    Ma non so cosa aspettarmi in caso di errore, ho provato ad eseguirlo ma non succede nulla... invece ho appena provato ad eseguire il codice fuori da qualsiasi funzione ed effettivamente funziona...
    In questo caso funziona sia con $db che senza...
    Codice PHP:
    $cf="fornitore";
    $idCF="154";
    $QDati="SELECT * FROM ".$cf." WHERE ID='".$idCF."'";
    echo(
    $QDati.'\n');
    $risQDati=mysql_query($QDati) or die(mysql_error());
    echo !
    $risQDati.'\n';
    if(!
    $risQDati)
      echo(
    "Impossibile trovare i dati associati al ".$cf." richiesto, si prega di riprovare.".'\n');
    else
    {
      while (
    $rowDati=mysql_fetch_array($risQDati))
      {
        echo 
    "cod:".$rowDati['Cod']."tel:".$rowDati['Telefono']."ref:".$rowDati['Referente']."nome:".$rowDati['Nome'];
      }


  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Il or die(mysql_error()) stampa a video la causa dell'errore nel caso in cui mysql_query fallisse.
    Quando hai provato la query con $db avevi aggiunto $db come parametro della funzione ? Se non è il caso, prova ad aggiungerlo.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    21
    Ho provato a fare come mi hai consigliato, quindi ho aggiunto ai parametri della funzione $db e gliel'ho passata dove la richiamo, ora il codice viene eseguito anche quando metto come parametro a mysql_query() $db, però se metto "or die(mysql_error());" non esegue il codice, infatti non mostra neanche gli echo...
    Rimane però il problema sul risultato della query, infatti continua a non avere valori...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.