Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [PHP] Stringhe non quotate!

    ciao a tutti

    premetto che ho sia in locale
    magic_quotes_gpc On On

    sia su aruba c'è
    magic_quotes_gpc On On

    ma quando faccio una query, non ottengo i risultati giusti!
    ecco 1 esempio:
    select * from immobili where citta='L' order by regione,provincia,citta

    questa è la query che mi mi restituisce lo script
    mentre doveva essere cosi:
    select * from immobili where citta='L'Aquila' order by regione,provincia,citta

    la città viene selezionata da una select che viene creata dinamicamente con dei dati presenti in un database e il value della option è giusto: L'Aquila

    ovviamente anche nel database il record ha sotto la voce comune la stringa L'Aquila

    da cosa può dipendere? sto impazzendo!
    help!


  2. #2
    Ehm..sai quella cosa chiamata backslash...

    Prima del segno ' della parola mettici una \
    diventa:

    codice:
    select * from immobili where citta='L\'Aquila' order by regione,provincia,citta
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  3. #3
    lo so, il problema è che magic_quotes_gpc è settato su ON quindi le stringhe si dovrebbero quotare automaticamente

  4. #4
    si quotano automaticamente quando vengono passate come parametro get, post o cookie! Se la variabile "L'aquila" la crei nella pagina non sarà backslashata :P
    www.gext.it

  5. #5
    codice:
    echo "<select class='login' name='ricercalocalita'>";
    echo "<option value='#' selected>- Tutte le localit&agrave; -</option>";
    for($i=0;$i<$num_citta;$i++) {
    $citta = mysql_result($res_citta,$i,'citta');
    echo "<option value='$citta'>$citta</option>";
    }
    echo "</select></td>";
    questo è il codice con cui si crea la select

    questo è il codice con cui controllo la città scelta:
    codice:
    if($_GET['ricercalocalita']!='#') {
       if($and)
          $query=$query."and ";
          $query=$query."citta='$_GET[ricercalocalita]' ";
          if($and==false)
             $and=true;
    }

  6. #6
    Originariamente inviato da ilc0rv0

    codice:
    if($_GET['ricercalocalita']!='#') {
       if($and)
          $query=$query."and ";
          $query=$query."citta='$_GET[ricercalocalita]' ";
          if($and==false)
             $and=true;
    }

    Non mancano dei ' dentro i due if?? e anche qualche graffa...
    www.gext.it

  7. #7
    le graffe no perchè
    if($and)
    $query=$query."and ";

    alla query aggiungo and solamente se $and è vera.
    il resto viene eseguito sempre (se hai una sola riga da eseguire come corpo di un if/while/for non c'è bisogno delle parentesi)

    le ' che mancano nell'if quali sono?

    cmq non penso altrimenti otterrei un warning (che cmq nn pregiudicherebbe la query).
    Funziona con tutte le citta, tranna dove ho l'apostrofo
    ES
    L'aquila
    Città Sant'Angeloe

  8. #8
    Originariamente inviato da tarini
    si quotano automaticamente quando vengono passate come parametro get, post o cookie! Se la variabile "L'aquila" la crei nella pagina non sarà backslashata :P
    quindi se uso la funzione real_escape_string($stringa) dovrebbe andare?

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.