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

    Problemi con ricerca valori

    Salve a tutti.
    ho un problema con una select che filtra una tabella.
    Quando si inserisce un valore con apostrofo nel campo search mi da errore in sql.
    Ho letto varie soluzioni che però non riesco ad applicare al mio caso, di seguito il codice
    Codice PHP:
    $search $_POST['search'];  
    $query="SELECT idassistito,assistito,cognome,nome 
    FROM AssistitiSIO  
    WHERE assistito 
    LIKE '
    $search%' 
    ORDER BY assistito"
    ;  

    $esegui_connessione=odbc_exec($connessione,$query); 
    if (!
    $esegui_connessione) { exit("Errore in SQL"); }  
    echo 
    ' <table border="1" align="center">         
    <tr>         
    <th>Cognome</th>         
    <th>Nome</th>         
    </tr>'
    ;  
    while (
    $row odbc_fetch_row($esegui_connessione)) 

    $row["assistito"] = str_replace($search"$search"$row['assistito']);
    $idassistito=odbc_result($esegui_connessione,"idassistito");    $assistito=odbc_result($esegui_connessione,"assistito");
    $cognome=odbc_result($esegui_connessione,"cognome");
    $nome=odbc_result($esegui_connessione,"nome");      

    echo 
    "<tr>     
    <td>
    $cognome</td>     
    <td>
    $nome</td> 
    </tr>"



  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Dovresti usare odbc_prepare() e poi odbc_execute() per rendere la query sicura, vedi l'esempio http://php.net/manual/en/function.od...hp#example-960

  3. #3
    La query funziona, il problema è la variabile $search, quando contiene un apostrofo da errore e non so come fare per evitarlo.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da pieramar
    La query funziona, il problema è la variabile $search, quando contiene un apostrofo da errore e non so come fare per evitarlo.
    Per 'query sicura' intendo una query che non puo essere modificata o fermata tramite eventuali apici slash o simili, e il metodo è utilizzare quelle 2 funzioni, è simile a pdo per logica

  5. #5
    Ho provato ma niente.
    posto le modifiche apportate al codice... aiuto
    Codice PHP:
    $result odbc_prepare ($connessione$query);  
    $esegui_connessione=odbc_execute($result); 
    if (!
    $esegui_connessione) { exit("Errore in SQL"); } 

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da pieramar
    Ho provato ma niente.
    posto le modifiche apportate al codice... aiuto
    Codice PHP:
    $result odbc_prepare ($connessione$query);  
    $esegui_connessione=odbc_execute($result); 
    if (!
    $esegui_connessione) { exit("Errore in SQL"); } 
    Devi sostituire le variabili esterne nella query con un ? e poi nel secondo campo dell'execute inserire un array contenendole in ordine

    es. (non l'ho provato)
    Codice PHP:
    $query="SELECT idassistito,assistito,cognome,nome  
    FROM AssistitiSIO   
    WHERE assistito  
    LIKE ?  
    ORDER BY assistito"
    ;  

    $result odbc_prepare($connessione,$query);
    $exec odbc_execute($result,array("$search%")); 

  7. #7
    Messa così, ma non carica più la pagina.

    Codice PHP:
    $search $_POST['search'];   
    $query="SELECT idassistito,assistito,cognome,nome  
    FROM AssistitiSIO   
    WHERE assistito  
    LIKE ? 
    ORDER BY assistito"
    ;    

    $result odbc_prepare ($connessione$query);

    $esegui_connessione=odbc_execute($result,array("$search%"));
    if (!
    $esegui_connessione
    {exit(
    "Errore in SQL");}

    echo 
    ' <table border="1" align="center">          
    <tr>          
    <th>Cognome</th>          
    <th>Nome</th>          
    </tr>'
    ;   
    while (
    $row odbc_fetch_row($esegui_connessione))  
    {  
    $row["assistito"] = str_replace($search"$search"$row['assistito']); $idassistito=odbc_result($esegui_connessione,"idassistito");    $assistito=odbc_result($esegui_connessione,"assistito"); $cognome=odbc_result($esegui_connessione,"cognome"); $nome=odbc_result($esegui_connessione,"nome");
     echo 
    "<tr>      
    <td>
    $cognome</td>      
    <td>
    $nome</td>  
    </tr>"
    ;  


  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da pieramar
    Messa così, ma non carica più la pagina.

    Codice PHP:
    $search $_POST['search'];   
    $query="SELECT idassistito,assistito,cognome,nome  
    FROM AssistitiSIO   
    WHERE assistito  
    LIKE ? 
    ORDER BY assistito"
    ;    

    $result odbc_prepare ($connessione$query);

    $esegui_connessione=odbc_execute($result,array("$search%"));
    if (!
    $esegui_connessione
    {exit(
    "Errore in SQL");}

    echo 
    ' <table border="1" align="center">          
    <tr>          
    <th>Cognome</th>          
    <th>Nome</th>          
    </tr>'
    ;   
    while (
    $row odbc_fetch_row($esegui_connessione))  
    {  
    $row["assistito"] = str_replace($search"$search"$row['assistito']); $idassistito=odbc_result($esegui_connessione,"idassistito");    $assistito=odbc_result($esegui_connessione,"assistito"); $cognome=odbc_result($esegui_connessione,"cognome"); $nome=odbc_result($esegui_connessione,"nome");
     echo 
    "<tr>      
    <td>
    $cognome</td>      
    <td>
    $nome</td>  
    </tr>"
    ;  

    In che senso non carica più la pagina? Ti da errore, carica risultati sbagliati?

  9. #9
    Da errore sul browser.

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.