Come si inserisce una variabile nella query??

di il
1 risposte

Come si inserisce una variabile nella query??

$TipoUtente=3;
$query="SELECT * FROM gestione_accessi WHERE (Username='$_POST[username]' AND Password='$_POST[password]' AND TipoUtente=$TipoUtente";

questa é la mia query, la uso in tre pagine php differenti per accedere a differenti parti del mio sito

Il database l'ho controllato, é tutto perfetto, il problema credo sia quindi nella query, sulla parte "AND TipoUtente=$TipoUtente"; perché senza essa la pagina funziona, ma ne ho bisogno

Ho provato a scrivere:
AND TipoUtente=$TipoUtente"
AND TipoUtente='$TipoUtente'"
AND TipoUtente=3"
AND TipoUtente='3'"
AND TipoUtente="3""

Ma niente, continua a darmi errore!
Che devo scrivere se devo confrontare TipoUtente con un valore sempre uguale/costante

1 Risposte

  • Re: Come si inserisce una variabile nella query??

    Ciao! Quel codice presenta diversi problemi.
    Innanzitutto per accedere ad un elemento dell'array puoi usare l'indice numerico o la stringa. Nel tuo caso non usi né l'uno né l'altro.

    In secondo luogo per passare un elemento di un array ad una stringa non puoi usare direttamente la notazione con i doppi apici, ma devi racchiudere la variabile di tipo array dentro alle parentesi graffe, in questo modo:
    
    $myarray['foo'] = "wasd";
    print "Array: {$myarray['foo']}"; //stamperà la stringa  "Array: wasd"
    
    Oppure puoi "spezzare" la stringa in più sottoparti:
    
    $myarray['foo'] = "wasd";
    print 'Array: '.$myarray['foo']; //stamperà la stringa  "Array: wasd"
    
    Nota che in quest'ultimo caso è possibile anche usare l'apice singolo, in quanto non c'è alcuna variabile da interpretare.

    Quindi un modo per scrivere la tua query è il seguente:
    
    $query = "SELECT * FROM gestione_accessi WHERE (Username='{$_POST['username']}' AND Password='{$_POST['password']} AND TipoUtente=$TipoUtente')";
    
    Infine una query di questo tipo è vulnerabile ad attacchi di sql injection (se l'utente al posto della password inserisce una stringa opportuna allora egli è in grado di accedere al sistema pur non avendone il diritto). Per questo motivo è consigliabile usare i prepared statements, disponibili con le estensioni mysqli (nella loro versione Object-Oriented) e PDO
Devi accedere o registrarti per scrivere nel forum
1 risposte