-
errore php/mysql
sono passato da poco al db di altervista, prima usavo freesql come db esterno.
Passando al db di altervista mi da un errore. dopo aver effettuato una query se provo a utilizzare la variabile di risultato ottengo
supplied argument is not a valid MySQL result resource
errore che non avevo prima con l'altro db. Ho aggiornato i dati e non capisco proprio da cosa possa dipendere.
-
Eh.. posta il codice intanto, altrimenti non possiamo fare nulla.
-
Codice PHP:
$connect_login = mysql_connect($_SESSION["db_host_login"], $_SESSION["db_user_login"], $_SESSION["db_password_login"]);
$connect_login;
$db_selected_login = mysql_select_db($_SESSION["db_name_login"], $connect_login);
$db_selected_login;
$secure_user=mysql_escape_string(strtolower($_POST["social_user"]));
$secure_passwd=mysql_escape_string($_POST["social_passwd"]);
$query_login="SELECT * FROM smf_members WHERE memberName = '".$secure_user."' AND passwd = password('".$secure_passwd."')";
if ($_SESSION["debug"]==1) echo "<b>Debug info: </b>".$query_login."<br>";
$result_login=mysql_query($query_login,$connect_login);
echo $result_login;
if (mysql_num_rows($result_login)>0) {
while ($row = mysql_fetch_assoc($result_login)) {
la riga incriminata è il mysql_num_rows, ma se la elimino e provo il fetch da lo stesso errore
-
C'è un errore:
Codice PHP:
$query_login="SELECT * FROM smf_members WHERE memberName = '".$secure_user."' AND passwd = password('".$secure_passwd."')";
cos'è password(..)? E' una funzione che hai scritto del php che ti restituisce qualcosa (un hash per esempio? Se è così
Codice PHP:
$query_login="SELECT * FROM smf_members WHERE memberName = '".$secure_user."' AND passwd = '".password($secure_passwd)."'";
altrimenti
Codice PHP:
$query_login="SELECT * FROM smf_members WHERE memberName = '".$secure_user."' AND passwd = '".$secure_passwd."'";
-
no password() è una funzione sql per hashare le password ;)
prova una query così
Codice PHP:
SELECT password('prova')
ti restituisce la parola prova hashata da sql.
Cmq ripeto che con il db di freesql funzionava perfettamente, non capisco cosa possa avere quello di altervista di diverso
-
ah.. non la conoscevo.. comunque hai controllato che la connessione sia effettivamente stabilita? Perchè prelevi i dati dalla sessione? I dati del db non cambiano mai, puoi impostarli come costanti.
-
mi servirà spostarlo in futuro, quindi li ho impostati in sessione. Ma non credo che questo possa influenzare il risultato no?
-
No, controlla comunque che la connessione sia stata effettuata, ed eventualmente posta i dati che hai nelle variabili di sessione, magari sono sbagliati.
#edit al limite leva la funzione password e scrivitela a mano, forse l'attuale versione di MySQL usata da AV non la supporta.
-
come controllo la connessione?
i dati sono questi:
Codice PHP:
$_SESSION["db_host_login"]="localhost"; //host
$_SESSION["db_user_login"]="lamalennyrepo"; //utente
$_SESSION["db_password_login"]="";//password
$_SESSION["db_name_login"]="my_lamalennyrepo"; //nome database
-
Ho editato il post rileggilo. Comunque, in linea di massima
Codice PHP:
$connect_login = mysql_connect($_SESSION["db_host_login"], $_SESSION["db_user_login"], $_SESSION["db_password_login"]) or die("Errore connessione");
..
Codice PHP:
$db_selected_login = mysql_select_db($_SESSION["db_name_login"], $connect_login) or die("Errore selezione db");
-
si connette correttamente ma da errore nella selezione del database. Il nome del db non dovrebbe essere my_username?
-
ovviamente nel tuo caso, visto che il tuo username è lamalennyrepo, devi indicare my_lamalennyrepo
ciao!
-
$_SESSION["db_name_login"]="my_lamalennyrepo";
$db_selected_login = mysql_select_db($_SESSION["db_name_login"], $connect_login);
$db_selected_login;
a me sembra corretto
-
dopo ogni funzione mysql_* metti un or die(mysql_error());
PS: ma perchè metti sempre quelle variabili lì in mezzo al codice senza motivo?
ciao!
-
si ho copiato solo un pezzo, quella variabile era nell'if per vedere se la funzione va:
$db_selected_login = mysql_select_db($_SESSION["db_name_login"], $connect_login);
if (!$db_selected_login) echo "Errore connessione2";
ad ogni modo quello che non capisco è perchè da errore nella scelta del db
-
Ripeto, scrivi così:
mysql_select_db($_SESSION["db_name_login"], $connect_login) or die(mysql_error());
e assicurati che le variabili vengano popolate correttamente:
print_r($_SESSION);
ciao!
-
Access denied for user ''@'localhost' to database 'my_lamalennyrepo'
la variabile di sessione è corretta
-
Non indichi l'user.
Posta la parte in cui tenti la connessione, per intero.
Ciao!