- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysql mostra a schermo dati sbagliati
-
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
-
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??
-
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.
-
Eh... ma mi servono tutti i campi della tabella... il problema è che mi mostra anche le righe dei comuni che non ho chiesto...
-
Posta i campi della tabella e diamo una controllata.
-
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...
-
Sicuramente non è la query il problema, posta il codice php che elabora la query in maniera da poter vedere cosa fai esattamente.