• User Attivo

    Mysql mostra a schermo dati sbagliati

    Ciao a tutti
    mi trovo di fronte a uno strano problema... ho un sito in php e mysql e una pagina che mi mostra una serie di righe di dati ricavandole da un db mysql.

    In questa pagina tramite php lancio una query mysql stupidissima, del tipo:

    SELECT * FROM tabella WHERE (comune='1' OR comune='2') ORDER BY comune ASC LIMIT 0,30

    Premetto che stampando la query a video viene mostrata corretta e lanciandola da Phpmyadmin viene eseguita correttamente e mostra i dati corretti.

    Il problema si presenta quando chiedo alla query di mostrarmi i dati all'interno del sito.

    All'interno del sito la query mostra i dati dei comuni che ho richiesto più alcuni dati (che sembrano presi a caso) di altri comuni che non ho chiesto che non centrano nulla con le condizioni che ho impostato nella query.

    Non riesco proprio a capire perchè si comporti cosi, a qualcuno è mai successo qualcosa di simile? Qualcuno è riuscito a venirne a capo?

    Nella tabella mysql in questione sono presenti quasi 10000 righe, può essere un problema dovuto ai troppi dati? Può dipendere dagli indici o dalle impostazioni della tabella?

    Un problema simile mi era già capitato con un altro sito, sempre con tabelle contenenti migliaia di dati, in quel caso una query che fino al giorno prima funzionava, di colpo decise di comportarsi in modo strano, risolsi la cosa inserendo nella prima colonna della tabella di output un contatore in php (del tipo ($numero ++; echo $numero;) e la query tornò a mostrare i dati corretti. Ammetto però di non aver capito perchè la cosa funzionasse, il contatore lo avevo aggiunto in fase di debug per capire se c'era una correlazione tra il numero di righe e l'errore, per poi accorgermi che con il contatore tutto funzionava.

    Questa volta non vorrei dover ricorrere a trucchetti tipo il contatore, ma ci terrei a capire il perchè di questi strani comportamenti per imparar a risolverli in futuro.

    Qualcuno mi può aiutare?

    Ciao
    Grazie


  • User Attivo

    Forse si può risolvere con mysql_unbuffered_query()???

    Potrebbe essere un problema di buffer dei dati? Ho molti utenti che utilizzano lo stesso file, ognuno con dati diversi, Può essere rimanga nelle memorie di mysql qualche riga di richieste effettuate precedentemente da altri utenti??


  • User Attivo

    Se la tua tabella ha diversi campi,è chiaro e palese che,effettuando una
    query così

    
    SELECT* ** FROM tabella WHERE (comune='1' OR comune='2') ORDER BY comune ASC LIMIT 0,30
    
    

    selezioni tutti i campi presenti nella tabella,filtrandoli poi con la condizione
    WHERE,quindi, la tua perplessità nella restituzione dei record con
    dati che non hai richiesto non ha motivo di fondamento;forse,dovresti
    mettere nella tabella in sostituzione dell' asterisco i campi che ti interessano.
    :fumato:


  • User Attivo

    Eh... ma mi servono tutti i campi della tabella... il problema è che mi mostra anche le righe dei comuni che non ho chiesto...


  • User Attivo

    Posta i campi della tabella e diamo una controllata.
    :fumato:


  • User Attivo

    Questa è la tabella

    CREATE TABLE IF NOT EXISTS preferenze_acquirenti (
    id_preferenze int(11) NOT NULL auto_increment,
    uid int(11) NOT NULL,
    categoria varchar(255) NOT NULL,
    contratto varchar(255) NOT NULL default 'vendita',
    comune varchar(255) NOT NULL,
    comune2 varchar(255) NOT NULL,
    comune3 varchar(255) NOT NULL,
    provincia varchar(255) NOT NULL,
    ins_da varchar(255) NOT NULL,
    PRIMARY KEY (id_preferenze)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9711 ;

    però vorrei ricordare che query e database sembrano funzionare, se lancio la stessa query in phpmyadmin vedo tutto correttamente, il problema si presenta solo nell'output html.

    Ho anche provato a far un file con solo la query che genera la tabella (si sa mai derivi da qualche altra variabile del portale) ma nulla da fare, mostra sempre risultati in più, con 2 schermi affiancati, su phpmyadmin ho i risultati corretti, sulla pagina html sbagliati...


  • ModSenior

    Sicuramente non è la query il problema, posta il codice php che elabora la query in maniera da poter vedere cosa fai esattamente.