Visualizzazione dei risultati da 1 a 5 su 5

Discussione: ricerce sql con apici

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    ricerce sql con apici

    ciao a tutti! sto cercando di fare una sezione di ricerca nel mio sito... funziona... ma non perfettamente!
    ho fatto una prova con una parola "difficile" come: l'apice(")
    quindi mi crea la seguente istruzione sql:
    SELECT count(*) FROM jos_content WHERE `title` LIKE '%l'apice(")%'
    che ovviamente da errore perchè i monoapici sono dispari
    allora ho filtrato con addslashes e mysql_real_escape_string ma la query ora sarà:
    SELECT count(*) FROM jos_content WHERE `title` LIKE '%l\'apice(")%'
    così l'istruzione non da errore ma non mi restituisce nulla perchè nel db non esiste la stringa l\'apice(") ma solo l'apice(")

    come posso risolvere?
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    secondo voi se faccio
    $value=str_replace("\\", "\\\\\\\\", str_replace("'", "''", $value));
    dove $value sarà la variabile da ricerca presa dal form funziona?
    perchè a me sembra andare ma magari non ho considerato qualcosa..
    grazie

  3. #3
    $word = mysql_real_escape_string("l'apice(\")");
    mysql_query("SELECT count(*) AS numero FROM jos_content WHERE `title` LIKE '%$word%'");

    devi filtrare solo la parola di riscerca con mysql_real_escape_string. un'altro consiglio che ti do è di non usare la funzione count(*). Essa funziona bene quando trova dei record ma genera errore quando non ci sono record....per esempio se dopo aver eseguito la query memorizzi il risultato una variabile e usi mysql_fetch_array() per mettere i dati in un array, se la query non ha generato dei risultati avrai un errore sulla riga che contiene mysql_fetch_array(). usa invece mysql_num_rows() per contare i record..nel caso di zero record la funzione restituisce false, altrimenti ritorna il numero di record estratti
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    il mio script di prima scritto con la forza della disperazione ho trovato già da me più e più motivi perchè non va bene
    però nemmeno il mysql_real_escape_string mi funziona...
    perchè se faccio $word = mysql_real_escape_string("l'apice(\")"); risulta: l\'api\\|/ce(\")
    e se dal phpmyadmin eseguo questo:
    codice:
    SELECT *
    FROM `testj`.`jos_content`
    WHERE (
    `title` LIKE '%l\'api\\|/ce(\")%'
    )
    LIMIT 0 , 30
    non mi ritorna nulla

    Però se faccio la ricerca con il phpmyadmin e guardo la query generata mi riscrive la stringa come: l''api\\\\|/ce(")

    quindi mi serve uno script che mi generi ciò immagino

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    anzi! in realtà mi sbagliavo... lo script di prima dovrebbe funzionare...
    però se me lo smentite ci credo o se mi postate del codice più funzionale va benissimo!

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.