-
Domanda Mysql
Volevo chiedere una cosa che probabilmente può risultare molto semplice...
Se cerco ad esempio di selezionare campi da un database con questo codice:
$query = "SELECT * FROM ciao";
$query mi restituisce TRUE o FALSE nel caso l'esito sia andato a buon fine?
-
$query contiene una stringa...
se fai
$query=mysql_query($query);
ottieni i dati
per sapere se c'è stat qualche problema controlla mysql_error() ;)
-
Quindi se faccio:
$query=mysql_query(SELECT * FROM ciao);
La variabile $query mi restituisce TRUE o FALSE?
-
No, ti restituisce un array contenente di dati della query!
Come da precedente risposta per sapere se c'è stato errore basta usare "mysql_error()" dopo la query.
-
già ;)
l'array è in un formato un "po' particolare", per poterlo manipolare come un array normale devi fare un
Codice:
mysql_fetch_array($query);
-
Allora...Vi spiego cosa avevo in mente...Devo fare una pagina di login e molto semplicemente avrei fatto:
$query = "SELECT * FROM utents WHERE user= '$username' AND pass = '$password'";
Quindi se mi restituiva TRUE o FALSE avrei fatto di conseguenza...
Ora però scopro che non funziona così e cerco un altra via seguendo le vostre indicazioni che però non mi funzionano...
Se scrivo: $risultati=mysql_query($query);
Le variabili che vengono di conseguenza ( $risultati [0] , $risultati [1] ...) sono vuote...
In più usando il codice per gli errore in questo modo: mysql_error($query)
Non appare niente neanche se la variabile è sbagliata!
Quindi non so più come fare!
-
perfetto
se l'utente non esiste ti torna un array vuoto :D
quindi ti basta un
Codice:
if(mysql_num_rows($query) > 0){
//utenteok
}
else{
//utente o pass errati
}
NOTA: gli indici dell'array ottenuto con mysql_fetch_array() coincidono con i nomi delle colonne
nel tuo caso
$risultati=mysql_fetch_array(mysql_query($query));
$risultati['user'] contiene l'utente
$risultati['pass'] contiene la password
-
Mi dà però un problema...Dice che mysql_num_rows è sempre 0!
-
anche se i dati ci sono?
vai in phpmyadmin e prova ad eseguire la query da la e vedi come mai ;)
forse hai sbagliato qualche nome nella query ;)
-
La query funziona perfettamente in phpMyadmin! :cry:
-
:?????:
strano..
(il mysql_num_rows() devi farlo PRIMA del fetch_array e devi farlo sul risultato della query)
posta il codice ke hai usato
-
Ho capito l'errore...Ehm...Stupido...Per sbaglio...Nel fare copia e incolla...Ho cancellato la parte che connette al database... :oops:
Adesso riscrivo il codice e controllo se funziona!
EDIT
Ho rimesso a posto il codice, controllato la stinga con phpMyadmin e funziona, ma mi dà sempre utente inesistente! :cry: Il codice è il seguente:
Codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
$db_host = "";
$db_user = "";
$db_password = "";
$db_name = "";
$myconn = mysql_connect($db_host, $db_user, $db_password);
if ($myconn == FALSE)
die ("Errore nella connessione. Verificare lo script");
mysql_select_db('my_compratutto', $myconn);
$query = "SELECT * FROM utenti WHERE user = 'morbibi' AND pass = 'giulio'";
mysql_num_rows($query);
$risultati=mysql_fetch_array(mysql_query($query));
if(mysql_num_rows($query) > 0)
{
echo"Tutto OK!";
}
else
{
echo "Utente inesistente!";
}
?>
</body>
</html>
Perché non funziona? :crycry:
-
Prova così:
$risultati=mysql_fetch_array(mysql_query($query));
if(count($risultati) > 0)
{
echo"Tutto OK!";
}
else
{
echo "Utente inesistente!";
}
-
è normale che così nn funzioni
non dovevi mettere solo $query ma mysql_query($query) altrimenti non esegue la query
if(mysql_num_rows(mysql_query($query)) > 0)
{
echo"Tutto OK!";
}
else
{
echo "Utente inesistente!";
}
-
Grazie mille!!! Ora funziona tutto!
-
Rieccomi qua con un'altra domanda! Funziona tutto perfettamente e sono veramente contento di ciò! Comunque ora vi faccio vedere un altro problema che avevo nella pagina di registrazione!
In pratica quando registra i dati nel database ne fa due...Quindi due ID con gli stessi dati!
Per aggirare il probelma nella pagina di attivazione eliminavo l'ID!
Comunque sarebbe meglio mettere a posto il problema dalla fonte!
Il codice della pagina registrazione:
Codice:
<?
if ($username =="" OR $password=="" OR $email==""){
echo "Campi username, password o e-mail errati!";
}
else {
$attivo = "1";
// Parametri di connessione al database
$db_host="";
$db_username="";
$db_password="";
$db_name="";
$db = mysql_connect($db_host, $db_username, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file configua.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file configura.php");
$query = "INSERT INTO utenti (user, pass, mail, Attivo) VALUES ('$username', '$password', '$email', '$attivo')";
mysql_query($query);
$num = mysql_insert_id();
$tuoemail="???@???.it";
$soggetto="Conferma iscrizione a ???";
$corpo_mesaggio="La ringraziamo per essersi iscritto a ???.
Per confermare la sua iscrizione clicchi il link sottostante:
http://compratutto.altervista.org/hp/attiva.php?ID=$num
Lo Staff";
mail ("$email", "$soggetto", "$corpo_mesaggio", "From: $tuoemail");
if (mysql_query($query, $db))
echo "Sei stato registrato correttamente!";
else
echo "Errore durante la registrazione!";
mysql_close($db);
}
?>
Non mi sembra registri due volte...Quindi non riesco a capire il perché!
-
Se ripeti l'INSERT INTO ti ripete la cosa!!
Devi usare UPDATE(vedi la sintassi) e mettere nella clausola WHERE id = $num (che è l'id che ripeschi dal primo inserimento)
esempio:
UPDATE nome_tabella SET EMAIL='nuova mail' WHERE ID=$num
PS
Per il primo script se lo metti come hai scritto avrai problemi di SQLinjections ATTENTO!
-
Ma io non ho ripetuto di nuovo INSERT...
-
lanci la query due volte
mysql_query($query);
e dopo con
mysql_query($query, $db);
togli il secondo (quello dentro all'if) :P
-
Grazie mille! Non l'avevo notato! Ma pensate sia finita qui? Bhé vi siete sbagliati!
Non vi libererete mai di me! :twisted:
Vi chiedo due cose (Poi forse abbiamo finitò!)
1) Qual'è il codice per dirgli ad esempio...Aspetta 5 secondi e poi continua con il codice?
2) Sempre nel mio sistema di registrazione/login sto facendo una pagina per modificare i dati degli utenti! Ho fatto un form che ounta ad una pagina che controlla i dati inseriti! Se il campo è bianco non fa niente e lascia com'è se invece si è scritto qualcosa allora fa l'update!
Problema? Non uppa!
Io scrivo:
mysql_query("UPDATE utenti SET username = '$username' WHERE id = '$id'");
Ma non funziona! :cry:
E non so il perché...
Grazie in anticipo!