Newsgroup: it.comp.www.php
Titolo: precisione nella ricerca

Ciao a tutti
So benissimo che mi direte di andare ad un NG specifico ma ci sono giò 
sttato e c'è poco traffico e non risponde nessuni
Senz'altro sapete anche voi meglio di loro la eisposta.
Devo fare una query per trovare un record unico in una tabella mysql do nomi 
utenti con i loro dati anagrafici
La chiave di ricerca è l'id che è un numero di 5 cifre
l'indice è su id
Volevo sapere come avere la massima precisione di ricerca e l'assenza totale 
di errori per evitare ne modo più assoluto di dare ad un utente i dati di un 
altro nel posto dei suoi
Attualmente ci sono pochissimi records e di errorii non ce ne sono con 
questa query:
$query ="SELECT * FROM rubrica WHERE id='$id' ";
alcuni amici mi hanno però messo nel dubbio dicendomi che questa query non 
ha una precisione totale
Cosa mi consiglioate di fare?
Grazie

Cosa mi consiglioate di fare?
Cambiare amici :-)
Leonardo
-- 
IN NO EVENT SHALL MICROSOFT [] BE LIABLE FOR [] FAILURE TO MEET ANY DUTY
INCLUDING OF GOOD FAITH OR OF REASONABLE CARE, FOR NEGLIGENCE [] EVEN IN
THE EVENT OF [] BREACH OF CONTRACT OR BREACH OF WARRANTY OF MICROSOFT...
                              -- EULA di Windows Media VCM 9, articolo 8

 Cosa mi consiglioate di fare?
capire meglio. La query in sè è impossibile che dia valori diversi da
quelli che ti aspetti, a patto che l'indice creato su id sia univoco
(e non vedo perchè non dovrebbe esserlo). Ma a meno che gli amici non
volessero semplicemente confonderti o non siano dei totali
incompetenti, magari l'avviso te l'hanno dato per altri motivi, tipo
perchè il modo in cui tu tiri fuori l'id da passare alla query non è
sicuro o perchè i dati dei vari utenti sono troppo sensibili per farli
vedere anche agli altri. Per fare un esempio banale, se nel tuo codice
c'e' una pagina per vedere i dettagli della rubrica che viene chiamata
così:
details.php?id=14
e poi quel "14" viene passato alla tua query tramite variabile
"$_GET" (ma anche POST sarebbe uguale, ora ho scelto questo per
semplicità), sei nei guai perchè basta che un utente cambi nel browser
quel "14" con altri numeri a caso e potrà leggere anche i dati degli
altri utenti. E se non controlli bene cosa c'e' nella variabile $id
prima di appicciarla in fondo alla query, rischi facciano ben di
peggio ;^)
bye!

e poi quel "14" viene passato alla tua query tramite variabile
"$_GET" (ma anche POST sarebbe uguale, ora ho scelto questo per
semplicit�), sei nei guai perch� basta che un utente cambi nel browser
quel "14" con altri numeri a caso e potr� leggere anche i dati degli
altri utenti. E se non controlli bene cosa c'e' nella variabile $id
prima di appicciarla in fondo alla query, rischi facciano ben di
peggio ;^)
bye!
Dunque
l'id non lo sa nessuno
l'id � in una variabile di sessione e ci viene inserito al login
Nella pagina di modifica dei dati anagrafici l'id viene prelevato dala 
variabile di sessione $id=$_SESSION['id'];
nella tabella � un int (5) che in fase di inserimento nuovo utente viene 
definito dal parallelo valore autoincrement del campo id (int5) 
autoincrement della tabella delle password.
Nella tabella dei dati anagrafici l'indice � una PRIMARY KEY indicizzato su 
ll'id ed � qui che ho qualche dubbio e non so se vada bene o se ne devo 
creare una di tipo index oppure unique o fulltext.
Fulltext non credo perch� id � un int.

 creare una di tipo index oppure unique o fulltext.
averlo definito primary key è più che sufficiente, hai automaticamente
che è unique e fulltext è ovviamente inutile.
A questo punto mi unisco a Leonardo: cambia amici ;^)
bye!

 ha scritto nel messaggio A questo punto mi 
unisco a Leonardo: cambia amici ;^)
bye!
si lo far�