Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    usare una variabile come parte di una query?

    Ho una query classica, del tipo SELECT, ma ho bisogno di costruirla utilizzando delle variabili.
    Mi spiego: la query la scrivo così
    Codice PHP:
    $result mysql_query("SELECT * FROM `news` WHERE $location AND $taggation AND $kindation AND (`deadline` = '0000-00-00' OR `deadline` >= CURDATE()) AND `date` <= '$month3' ORDER BY `news_id` DESC");
    while (
    $row mysql_fetch_array($result)) {
    ...

    mentre le tre variabili (che, appunto, possono essere variabili), le definisco prima, ad es. così
    Codice PHP:
    $location "(`location` = '$usa' OR `location` = '$canada')"
    Il problema è che, quando effettuo la query, mi dà il (classico) errore:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... on line 111
    Insomma, sembra non poter utilizzare le variabili come parte della query. Eppure, sono sicuro che si può fare!
    Dove sto sbagliando?
    metatad
    graphic & web design

  2. #2
    Analizza il valore di ritorno di mysql_query() per capire se la query è stat eseguita correttamente ed in caso contrario utilizza http://www.php.net/mysql_error per ottenere un messaggio di errore più significativo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Non mi restituisce alcun messaggio, ma in compenso (!) adesso mi dice che l'errore (sempre lo stesso) è alla riga 232. Solo che il file di righe ne ha 112...


    Codice PHP:
    $result3 mysql_query("SELECT * FROM `news` WHERE $location AND $taggation AND $kindation AND (`deadline` = '0000-00-00' OR `deadline` >= CURDATE()) AND `date` <= '$month3' ORDER BY `news_id` DESC");
                while (
    $row3 mysql_fetch_array($result3)) {
                echo 
    $row3["title"] . "
    "
    ;
        }
    echo 
    "errore: " mysql_error(); 
    metatad
    graphic & web design

  4. #4
    posso darti un consiglio:
    fatti scrivere nella pagina la query sql elaborata (con le variabili gia elaborate) e poi parsala, ti accorgerai che l'errore è stupidissimo perchè spesso usando le variabili nelle query (cosa che si fa sempre) ci si perde spesso un " o un '...te lo posso assicurare, infatti quello è un "trucco" che adotto spesso per vedere cosa mi sn perso lungo la query :P

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    ok, per quanto riguarda la questione delle righe ho capito (inavvertitamente, era stato duplicato il codice nella parte inferiore della pagina...).
    Comunque, continua ad essere stranissima la vicenda!
    Uso questo codice:
    Codice PHP:
    $result3 mysql_query("SELECT * FROM `news` WHERE $location AND $taggation AND $kindation AND (`deadline` = '0000-00-00' OR `deadline` >= CURDATE()) AND `date` <= '$month3' ORDER BY `news_id` DESC") or die ("Impossibile effettuare la query sql" mysql_error());
    while (
    $row3 mysql_fetch_array($result3)) {
    echo 
    $row3["title"] . "
    "
    ;

    Ma non mi restituisce alcun risultato, nè alcun errore!
    Premetto che, prima di fare la query, mi faccio un echo delle tre variabili $location, $taggation e $kindation, per verificare che sia tutto a posto con la correttezza formale della stringa (apici, segni di uguale, etc.), ed è tutto ok.
    Cosa caspita può mai essere?
    Please, HELP ME!
    metatad
    graphic & web design

  6. #6
    Salva lo statement SQL in una variabile, falla stampre dal PHP e prova ad eseguirla in un client MySQL (es. phpMyAdmin).

    In alternativa, utilizza echo(mysql_num_rows($result3)); per verificare il numero di righe restituite dalla query.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Davvero da diventare matti...
    Allora, mi restituisce l'errore:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND `tag` = '' AND AND (`deadline` = '0000-00-00' OR `deadline` >= CURDATE()) A' at line 1
    da cui sembrerebbe che non vede la variabile $tag né la variabile $kindation che sta tra i due AND mostrati in successione nel messaggio di errore.
    Eppure:
    1) subito prima della query, faccio un echo delle variabili, e me le stampa correttamente sulla pagina!
    2) al posto delli variabili ho provato a scrivere direttamente le stringhe (ad es.: `kind` = '$class'), ma lo stesso non mi dà alcun risultato! E per di più, non mi dà nemmeno l'errore!!!....
    metatad
    graphic & web design

  8. #8
    Le variabili dentro una query vanno stampate come variabili e non come stringhe:

    $result3 = mysql_query("SELECT * FROM `news` WHERE ".$location." && ".$taggation." ...........

    continua tu e vedi se è questo il problema ti consiglio anche di utilizzare && invece che AND

  9. #9
    Le variabili dentro una query vanno stampate come variabili e non come stringhe:
    Non vanno (devono), possono:

    http://www.php.net/manual/it/languag...parsing.simple

    Codice PHP:
    <?php 
    $where 
    'test = 1';
    $sql "SELECT * FROM table WHERE $where";
    echo(
    $sql);
    ?>

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    É una maledizione...
    se uso:
    Codice PHP:
    SELECT FROM `newsWHERE '.$location.' && '.$taggation.' && '.$kindation.' && .... 
    mi da errore, relativamente all'apice seguito/preceduto dal punto, se invece uso
    Codice PHP:
    SELECT FROM `newsWHERE $location && $taggation && $kindation && .... 
    tutto come prima, non mi da né errore né risulati...
    :master:
    metatad
    graphic & web design

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