Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    8

    Mysqli problema query con LIKE

    Ciao a tutti,
    per un sito devo implementare una ricerca per dei codici prodotto, ovviamente deve funzionare in modo da trovare anche codici non completi.

    Uso questa classe:
    h*t*t*p*s://github.com/ajillion/PHP-MySQLi-Database-Class

    Ho provato una cosa del genere:

    codice:
    $Parametri = "0978"
    $Query = "SELECT Prodotti.CodiceInterno FROM Prodotti WHERE Prodotti.ProductNumber LIKE ?";
    $Prods = rawQuery($Query,array("'%".$Parametri."%'"));
    Ho provato a spostare apici, mettere parentesi graffe etc.
    Ma funziona sempre e solo se il codice che passo come "$Parametro" combacia esattamente, non una parte. Dove sbaglio?

    P.S. Se provo ad eseguire la query da phpmyadmin funziona correttamente.

    Grazie Mille
    Luca

  2. #2
    Se fai così?

    Codice PHP:
    $Parametri "0978";
    $Query "SELECT Prodotti.CodiceInterno FROM Prodotti WHERE Prodotti.ProductNumber LIKE '%?%'";
    $Prods rawQuery($Query,array($Parametri)); 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    8
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Se fai così?

    Codice PHP:
    $Parametri "0978";
    $Query "SELECT Prodotti.CodiceInterno FROM Prodotti WHERE Prodotti.ProductNumber LIKE '%?%'";
    $Prods rawQuery($Query,array($Parametri)); 
    Ciao, grazie della risposta...

    Questo era il metodo con più senso che ho provato per primo. Errore:
    PHP Fatal error: Problem preparing query (SELECT * FROM Prodotti WHERE Prodotti.ProductNumber LIKE & # 39;%?%& # 39; ORDER BY CodiceInterno ASC ).... Check the manual that corresponds to your MySQL server version for the right syntax to use near '& # 39;%?%& # 39;


    (Ho messo gli spazi fra i codici degli apici perchè nel log sono scritti codificati e qui li sostituisce.)

    Si incasina con gli apici...
    Ultima modifica di Luca_; 20-01-2014 a 13:54

  4. #4
    Beh allora dovresti postare il codice della funzione rawQuery() per vedere cosa fa.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    8
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Beh allora dovresti postare il codice della funzione rawQuery() per vedere cosa fa.
    E' tutto qui:
    https://github.com/ajillion/PHP-MySQ...r/MysqliDb.php

    E' tutto in quel file. Ho aggiunto solo una riga per dire di usare il db con codifica UTF8.

    Grazie

  6. #6
    Guarda che rawQuery() è un metodo si una classa e NON una normale funzione. Non puoi richiamarlo come fai tu!!!

    Codice PHP:
    <?php
    require_once('MysqliDb.php');
    $db = new MysqliDb('...''...''...''...');
    $Parametri "0978";
    $Query "SELECT Prodotti.CodiceInterno FROM Prodotti WHERE Prodotti.ProductNumber LIKE ?";
    $Prods $db->rawQuery($Query, array("%$Parametri%"));
    print_r($Prods);
    ?>

    Così funziona perfettamente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    8
    Sisi, nel file c'è tutto, ho creato una istanza alla classe e il rawQuery è chiamato giusto $db->rawQuery etc. Qui ho scritto al volo e non l'ho risportato, la parte che dava problemi era il like. Provo subito mettendo in quel modo la variabile nell'array.

    Grazie!

    Perfetto. Funziona!!!!

    A scopo informativo, non dovrebbe essere equivalente:

    $pippo = "%".$paperino."%"
    e
    $pippo = "%$paperino%"
    ?
    Ultima modifica di Luca_; 20-01-2014 a 14:32 Motivo: FUNZIONA

  8. #8
    Quote Originariamente inviata da Luca_ Visualizza il messaggio
    A scopo informativo, non dovrebbe essere equivalente:

    $pippo = "%".$paperino."%"
    e
    $pippo = "%$paperino%"
    ?
    Si è equivalente, ma non andavano inseriti gli apici singoli.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    8
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Si è equivalente, ma non andavano inseriti gli apici singoli.
    Le solite sviste del cavolo....


    Grazie ancora,


    Luca

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.