Visualizzazione dei risultati da 1 a 6 su 6

Discussione: aiuto sulle query

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3

    [sql] erorri nella query

    ciao a tutti, sono molto niubbo e non capisco bene quale sintassi devo usare per far funzionare questa query.

    {
    $sce=$_POST[scelta_prodotto];
    echo $sce;
    //$query1 = (" SELECT * FROM articoli_prodotti WHERE prodotto='$sce' LIMIT 0, 100 ");
    //$query2 = sprintf (" SELECT * FROM articoli_prodotti WHERE prodotto='%s' ", mysql_real_escape_string($sce));
    //$query3 = sprintf(" SELECT * FROM articoli_prodotti WHERE prodotto='%s' ", $_POST[scelta_prodotto]);
    $query4 = (" SELECT * FROM articoli_prodotti WHERE prodotto='{$_POST[scelta_prodotto]}' LIMIT 0, 100 ");
    $result= mysql_query($query4);
    $numfields = mysql_num_fields($result);
    echo "<table border='1' align='center' cellspacing='1' cellpadding='1'>\n<tr>";
    for ($i=0; $i < $numfields; $i++)
    {
    echo '<th>'.mysql_field_name($result, $i).'</th>'; }
    echo "</tr>\n";
    while ($row = mysql_fetch_row($result))
    {
    echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n";
    }
    echo "</table>\n";
    mysql_free_result($result);
    }

    Allora, mi arriva una scelta tramite post (la stampo per vedere se è arrivata giusta) poi faccio una ricerca basandomi su quella scelta e do in output i risultati.

    ci sto provando da un po ma non trovo proprio quale sia la strada giusta


    edit:
    //$query1 = (" SELECT * FROM articoli_prodotti WHERE prodotto='pluto' LIMIT 0, 100 "); <-- "da il risultato giusto ma non uso la varibile"
    //$query2 = sprintf (" SELECT * FROM articoli_prodotti WHERE prodotto='%s' ", mysql_real_escape_string($sce)); <-- da come risultato insieme vuoto
    //$query3 = sprintf(" SELECT * FROM articoli_prodotti WHERE prodotto='%s' ", $_POST[scelta_prodotto]); <-- da come risultato insieme vuoto
    //$query4 = (" SELECT * FROM articoli_prodotti WHERE prodotto='{$_POST[scelta_prodotto]}' LIMIT 0, 100 "); <-- da come risultato insieme vuoto
    //$query5 = (" SELECT * FROM articoli_prodotti WHERE prodotto='%$_POST[scelta_prodotto]%' LIMIT 0, 100 "); <-- crash
    //$query6 = (" SELECT * FROM articoli_prodotti WHERE prodotto='%{$_POST['scelta_prodotto']}%' LIMIT 0, 100 "); <-- da come risultato insieme vuoto


  2. #2
    Prima di eseguire la query fai un "echo $queryX" e controlla che sia uguale a quella che funziona.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3
    ottimo consiglio !

    allura, stampando le query (escludendo la 5°)

    SELECT * FROM articoli_prodotti WHERE prodotto='pluto' LIMIT 0, 100
    SELECT * FROM articoli_prodotti WHERE prodotto=' pluto'
    SELECT * FROM articoli_prodotti WHERE prodotto=' pluto'
    SELECT * FROM articoli_prodotti WHERE prodotto=' pluto' LIMIT 0, 100
    SELECT * FROM articoli_prodotti WHERE prodotto='% pluto%' LIMIT 0, 100


    quindi, può essere che sia lo spazio di troppo a romepre le balle? (è l'unica differenza che vedo)

    edit:

    Ed in questo caso, come diavolo lo levo ?? :master:


  4. #4
    E' sicuramente lo spazio.
    La sintassi "%testo%' si usa con l'operatore LIKE non con '='.

  5. #5
    Ed in questo caso, come diavolo lo levo ?? :master:

    Beh la cosa migliore e' capire da dove viene ed evitare il problema alla fonte
    Altrimenti puoi usare la funzione trim()

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3
    premesso che andro a studiarmi la funzione consigliatami nell'ultimo post, ho trovato l'errore.



    praticamente la variabile che arrivava dal post era presa a sua volta da un menu a tendina che riportava i campi presi da una tabelle del db tramite una query. In quel pasticcio di cilco while in cui avevo inserito ricorsivamente il dato ci avevo piazzato uno spazio di troppo.

    quindi chiamavo una variabile dal db, gli aggiungevo uno spazio e poi pretendevo che di ritrovarla cercandola nel db


    while ($row=mysql_fetch_assoc($result1))
    { echo " <option value=\" " ; <<--------- qua ci sta lo spazio di troppo !!
    echo $row["nome_prodotto"] ;
    echo "\">" ;
    echo $row["nome_prodotto"];
    echo "</option>" ;
    }

    GRAzie mille k.b. , sopratutto per il primo consiglio !!

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.