Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    238

    Inserire un parametro in una query

    Ciao

    Devo scrivere una query al db mysql
    e devo inserire nella query un parametro

    $Qs = $_SERVER['QUERY_STRING'];
    Select * from links_infoazienda where categoria = $Qs["catetgoria"] "


    Scritto così mi dà errore. Qual'è la sintassi?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    238
    il codice intero era questo
    codice:
    $Qs =  $_SERVER['QUERY_STRING']; //querystring categoria
    									$mysqli1 = new mysqli($conStr_Host, $conStr_Username, $conStr_dbPass, $conStr_dbName);
    									$mysqli1->autocommit(true);
    
    									
    										$result1 = $mysqli->query("Select * from links_infoazienda where categoria =" . $Qs['categoria']);
                                            $i = 0;
    										while($row1 = $result1->fetch_assoc())
    										{
    										printf("%s", $row1["descrizione"]);
    										}
    
    
    										$result1->close();
    E' solo la sintassi del parametro che non conosco

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Che errore ti dà?
    Cosa ti restituisce echo $Qs; ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    238
    l'errore è il seguente
    codice:
    Fatal error: Call to a member function fetch_assoc() on a non-object in C:\links.php on line 54

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Dopo la query scrivi:

    Codice PHP:

    if (!$result1)
       {
       echo (
    "Errore: ".$mysqli->error);
       die();
       } 
    Che errore ti scrive?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    238
    C'è scritto
    Errore: Colonna sconosciuta 'pavimenti' in 'where clause'

    Ho fatto delle modifiche al codice

    Non riconosce $temp100 come una stringa

    $temp100 = "pavimenti";
    $result1 = $mysqli->query("Select * from links_infoazienda where categoria =" . $temp100);

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Devi mettere delle virgolette o degli apici attorno alle stringhe in SQL altrimenti vengono interpretate come nomi di colonna.

    codice:
    mysqli->query("SELECT * FROM links_infoazienda WHERE categoria ='".$Qs['categoria']."'");
    Ti converrebbe memorizzare gli id della categoria nel DB non il suo nome.

    Ad es. hai:

    tabella categorie:

    codice:
    id   |   nome
    ---------------
    1    |   cat1
    2    |   cat2
    3    |   cat3
    tabella infoazienda

    codice:
    id  |  nome         | id_cat
    ------------------------------
    1   |  azienda 1  |    2
    2   |  azienda 2  |    1
    3   |  azienda 3  |    2
    Risparmierai spazio e le query saranno più veloci

  9. #9
    ah ecco, nun se capiva

    allora, il fatto è che non devi usare $_SERVER['QUERY_STRING'] ma l'array $_GET, in questo caso perché ti pocchi sulla query string, o $_POST, nel caso di un form che passi la roba via post o js che passi la roba via post

    se fai un
    var_dump($_SERVER) trovi tanta roba interessante

    idem per
    phpinfo();
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  10. #10
    @nico80:

    c'è un problema di fondo, a parte l'errore della query che non avevo visto ...

    $Qs = $_SERVER['QUERY_STRING']; //querystring categoria

    questo non restituisce un array, bensi una stringa, che lui usa come array ... ora immagino tenga il reporting dei notice spento altrimenti lo avviserebbe ... deve usare $_GET, in questo caso

    inoltre tenere il nome è importante in molte situazioni, infatti quando costruisci un sistema di url "human-readable" capita che non hai a disposibione l'id nella query string e quindi devi andare con i nomi ... ma comunque permane quel problema di fondo
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.