Chiarimento su funzione mysql_connect (neofita)

16 Mag 2013
10
0
0
Salve a tutti!

Dunque quello che vi scrive è un neofita di cms, quali joomla, o wordpress.

Vorrei avere un po' di delucidazioni riguardo alla funzione my_connect.

Dunque, wiki riporta ciò:

PHP:
<?php mysql_connect("localhost","tuousername","tuapassword") or die("Errore nella connessione MySQL"); ?>
Con questo codice, PHP tenta la connessione a localhost con l'username e la password forniti, in caso di fallimento, stampa il messaggio di errore.


Eppure la cosa non funziona. Se inserisco i vari attributi (localhost, tuousername,tuapassword)
sbagliati, non ricevo alcun messaggio di errore.

Invece, eseguendo questo:

PHP:
<?php $db = mysql_connect("localhost", "tuousername", "tuapassword") or die("Errore nella connessione MySQL"); mysql_select_db("test", $db) or die("Database inesistente"); ?>

Il tutto funziona a meraviglia. Ovvero, è come se della funzione mysql_connect fosse ininfluente, e fosse mysql_select_db quella che comanda. Difatti che siano giusti o sbagliati gli attributi (localhost, tuousername,tuapassword), non influisce sulla risoluzione. Conta il nome del database (parametro "test" della funzione mysql_select_db). Solo inserendo un database sbagliato si visualizza il messaggio d'errore "Database inesistente".

Potreste spiegarmi questa cosa?

Grazie dell'attenzione!
 
ciao
sono entrambe essenziali
la prima si connette, la seconda (se la connessione è andata a buon fine) seleziona il database che devi utilizzare
 
Quindi praticamente, la prima si connette semplicemente e nient'altro?

Vorresti dirmi che forse la funzione die, non è compatibile con la funzione mysql_connect e di conseguenza non stampa nulla in caso di attributi (user,password) errati?


Allora perchè wiki dice ciò riguardo al primo codice php?
Con questo codice, PHP tenta la connessione a localhost con l'username e la password forniti, in caso di fallimento, stampa il messaggio di errore
 
ciao
si che è compatibile, la funzione si connette anzi meglio, cerca di connetteresi al server se non riesce da errore e quindi
die stampa il messaggio e fa morire lo scripit (die in inglese = muori) cioè lo interrompe e non lo fa continuare con le successive istruzioni.
in fase di sviluppo mentre si prova lo scripit sarebbe meglio che fosse
...or die (mysql_error());
in modo da sapere di quale errore si tratta.
se la connessione è avvenuta allora seleziona il database che devi usare. ecc...

poi non è detto che sia localhost potrebbe essere un server remoto (piccola imperfezione di wiki)

comunque meglio di wiki usa http://www.php.net/manual/en/ o guarda anche, per php https://www.mrw.it/php/ e per mysql https://www.mrw.it/mysql/
 
Grazie mille per la risposta.
E come mai nonostante i parametri siano errati (user e password) questa porzione di codice mi stampa sempre "connessione avvenuta con successo?"

PHP:
<?php
    $connessione = mysql_connect("localhost", "my_angdm", "password")
        or die("Connessione non riuscita: " . mysql_error());
    print ("Connessione avvenuta con successo");
    mysql_close($connessione);
?>
 
ciao
sei sicuro che la connessione non avvenga?
per tagliare la testa al toro metti un var_dump e quarda cosa riporta
PHP:
<?php
    $connessione = mysql_connect("localhost", "my_angdm", "password")
        or die("Connessione non riuscita: " . mysql_error());
	var_dump($connessione);
    print ("Connessione avvenuta con successo");
    mysql_close($connessione);
?>
se ti da bool false non è riuscita, invece ti da resuorce la connessione è riuscita, quindi hai fatto qualche pasticcio con i parametri.
eventualmete togli localhost e scrivici pinco_pallo (non credo che esista un server che si chiami così)
 
Sia cambiando il nome "localhost" con "pincopallino", che inserendo la porzione di codice da te indicatami (con il var_dumb) il risultato è lo stesso:

Connessione avvenuta con successo
 
ciao
se stai provando in locale (come sembra) puo essere che il tuo mysql sia impostato in modo che non siano necessarie le pass.
dal manuale php
Returns a MySQL link identifier on success or FALSE on failure.
quindi se non si connette il die deve funziare
 
No no, non è in locale.
Allora, dico un'ulteriore cosa.

Utilizzando il seguente codice
PHP:
<?php
if (mysql_select_db ("my_nomedatabase")) 
{
echo "Connessione avvenuta con successo";
}
else
die (mysql_error());
?>

raggiungo il mio scopo! Difatti inserendo un nome errato del database mi stampa l'errore. Viceversa, inserendo il nome esatto del database, stampa "Connessione avvenuta con successo".
Ma dico io, perchè la funzione mysql_select, va bene? Oltretutto senza necessità di connettersi (mysql_connect) al database??
 
ciao
orse ieri evidentemente dormivo e quindi sono tornato al tuo post #5.
l'ho copiato e lanciato, my_angdm non è l'user che uso
PHP:
<?php
    $connessione = @mysql_connect("localhost", "my_angdm", "password")
        or die("Connessione non riuscita: " . mysql_error());
    print ("Connessione avvenuta con successo");
    mysql_close($connessione);
?>
output
Connessione non riuscita: Access denied for user 'my_angdm'@'localhost' (using password: YES)

perchè dici che non funziona
p.s.
se tolgo il silent da anche l'errore prima
 
In realtà mi sa che non ci stiamo capendo :quote::quote:


http://laurabrandiferri90.altervista.org/eseguibile_mysql.php

Qui risiede il codice php.

Il mio prima era un esempio.

<?php
$connessione = @mysql_connect("blabla", "pippobello", "password")
or die("Connessione non riuscita: " . mysql_error());
print ("Connessione avvenuta con successo");
mysql_close($connessione);
?>

Sia che i parametri (blabla, pippobello e password in questo caso non sono quelli che corrispondono al mio database) sono giusti o sbagliati, il programma mi stampa sempre.
"Connessione avvenuta con successo".

Perchè mai?
 
Ultima modifica:

Discussioni simili