Database Errore Nella Connessione MySqli

Stato
Discussione chiusa ad ulteriori risposte.

carbos

Utente Emerald
14 Agosto 2010
957
132
122
477
Salve a tutti, io ho un problema con il collegamento al DB in PHP5 usando mysqli, ovvero, non mi accede al DB, ho provato con $mysql->ping e mi ridà FALSE, ovvero non è attiva la connessione. Ho provato anche con $mysql->connect_errno e $mysql->connect_error però non mi ridà nessun risultato, vi posto il codice con cui mi connetto al DB:
Codice:
require_once 'dati.php';
	$mysql = new mysqli($GLOBALS['host_db'] , $GLOBALS['user_db'] , $GLOBALS['pass_db'] , $GLOBALS['mysql_db']);


Ed in dati.php ecco cosa ho:
Codice:
<?php
$host_db= "nasa" ;
$user_db = "obama";
$pass_db= "barack";
$mysql_db = "gangnam";
$GLOBALS['host_db'] = $host_db;
$GLOBALS['user_db'] = $user_db;
$GLOBALS['pass_db'] = $pass_db;
$GLOBALS['mysql_db'] = $mysql_db ;
?>


Ho provato a fare soltanto così in PHP :
Codice:
<?php
$host_db= "nasa" ;
$user_db = "obama";
$pass_db= "barack";
$mysql_db = "gangnam";
?>


però ecco l'errore che mi dà errore di pass ecc anche sulle query...
Poi il controllo con il ping l'ho fatto così
Codice:
if($mysql->ping){
	    
	    print "ok";
	} else {
	    print "no";
	    $mysql->connect_error;
	}


e ridà sempre di "no" e l'errore neanche lo mostra
 
PHP:
$mysql = new mysqli_connect

Oppure puoi fare una cosa più organizzata creandoti un file di funzione da importare in ogni script e all'interno metti questo codice
PHP:
# definizione delle costanti per l'autenticazione al DBMS
define('DATA_HOST', 'localhost');
define('DATA_UTENTE', 'nomeutente');
define('DATA_PASS', 'password');
define('DATA_DB', 'nomedatabase');

   # connessione al DBMS
    $connessione = @mysqli_connect(DATA_HOST, DATA_UTENTE, DATA_PASS) or die('Errore nella connessione: ' . mysql_error()); 
   # selezione del database
    @mysql_select_db(DATA_DB, $connessione) or die('Errore dal database: ' . mysql_error());
 
Ultima modifica:
PHP:
$mysql = new mysqli_connect

Oppure puoi fare una cosa più organizzata creandoti un file di funzione da importare in ogni script e all'interno metti questo codice
PHP:
# definizione delle costanti per l'autenticazione al DBMS
define('DATA_HOST', 'localhost');
define('DATA_UTENTE', 'nomeutente');
define('DATA_PASS', 'password');
define('DATA_DB', 'nomedatabase');

   # connessione al DBMS
    $connessione = @mysqli_connect(DATA_HOST, DATA_UTENTE, DATA_PASS) or die('Errore nella connessione: ' . mysql_error()); 
   # selezione del database
    @mysql_select_db(DATA_DB, $connessione) or die('Errore dal database: ' . mysql_error());
Sharu, wtf? Mysql e mysqli più operatore di silenzio? lol

Comunque tornando al topic, utilizza una connessione tramite l'oggetto mysqli, e gestisci facilmente gli errori di connessione con le proprietà connect_errno e connect_error
PHP:
$host='localhost';
$user = 'user';
$pass='pass';
$db = 'database';
$mysqli = new mysqli($host,$user,$pass,$db);

if($mysqli->connect_errno) echo "Errore nella connessione: $mysqli->connect_errno $mysqli->connect_error";
Inoltre trovo molto inutile fare questo
PHP:
$GLOBALS['host_db'] = $host_db;
$GLOBALS['user_db'] = $user_db;
$GLOBALS['pass_db'] = $pass_db;
$GLOBALS['mysql_db'] = $mysql_db ;

Se includi il file, hai già le variabili

Infine l'errore non lo stampa perché non lo stampi :asd:
PHP:
print "no $mysqli->connect_error";

E per ultimo ti ricordo che $var->ping() è un metodo non una proprietà in mysqli

ps: ti consiglio di utilizzare echo al posto di print, è leggermente più veloce
 
Onestamente nn ho ben capito swoller, ho provato a fare con il print, però mi esce "0" , poi uso $GLOBALS perchè me l'aveva consigliato un amico mio xD se anche nn ho ben capito come funge... Comunque sto usandoil tutto in una classe... e poi, $mysql->ping ho visto che vede se il DB è connesso oppure no :omfg::
 
Onestamente nn ho ben capito swoller, ho provato a fare con il print, però mi esce "0" , poi uso $GLOBALS perchè me l'aveva consigliato un amico mio xD se anche nn ho ben capito come funge... Comunque sto usandoil tutto in una classe... e poi, $mysql->ping ho visto che vede se il DB è connesso oppure no :omfg::
Se è 0 significa che non ci sono errori, $GLOBALS è abbastanza inutile usarlo dato che una volta incluso il file hai le variabili, e se devi accederci in qualche funzione ti basta utilizzare global normale riferendosi alla variabile che vuoi recuperare

es.
PHP:
$var = 10;

function prova(){
    global $var;
    echo $var;
}
quando andrai a richiamarla stamperà 10

Il $mysqli->ping() è un metodo che ritorna un valore booleano (quindi vero o falso) e verifica se è possibile connettersi al server
 
Appunto... a me ridà false... Poi non continua il codice perchè? Non fa i controlli se l'user già esiste ecc, questo di solito dipende che nn si è connesso...
 
Appunto... a me ridà false... Poi non continua il codice perchè? Non fa i controlli se l'user già esiste ecc, questo di solito dipende che nn si è connesso...
Non ho ben capito cosa vuoi dire, comunque con l'esempio che ti ho mostrato per primo dovrebbe andarti perfettamente
 
Ho fatto come dicevi... però non funziona, ho messo il require_once fuori dalla classe e poi usato le global, però sempre "no" e "0" mi dà...
 
Stato
Discussione chiusa ad ulteriori risposte.