salve sto avendo un problema nella creazione e connessione al database, tutto viene fatto dall'utente, è un po lunga da spiegare comunque e un app lato server sviluppato in php cui alla prima apertura ti riporta nella pagina di istallazione dove ti chiede delle info per creare sia l'amministratore che la creazione del database.
In questa pagina ci sono 2 campi che ti chiede "nome del database" e "password del database".
La creazione del database viene fatta senza problemi, il problema arriva quando deve connettersi al database che non lo fa vi posto un po di codice:
Codice PHP:
$nome_utente=trim($_GET["nu"]);
$password_utente=trim($_GET["pu"]);
$nome_database=trim($_GET["nd"]);
$password_database=trim($_GET["pd"]);
include "../include/db.php";$db=new database;$resultdb = ($createdb=="1") ? creadb($db,$nome_database,$password_database) : creaTable($db,$nome_database,$password_database);
function creadb($db,$namedb,$pswdb){
$connessione = new mysqli("localhost","root","$pswdb") or die (mysqli_error()); if($connessione->connect_error) { return "error|<li>Impossibile connettersi.</li>"; }else{ $sql="CREATE DATABASE $namedb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"; if(!$connessione->query($sql)){ return "error|<li>Si è verificato un errore con la creazione del database, riprova.</li>"; }else{ return creaTable($db,$namedb,$pswdb); } }}
function creaTable($db,$namedb,$pswdb){
/* IN QUESTA RIGA SUCCESSIVA E DOVE SI VERIFICA L'ERRORE */ if(!$db->connect($namedb,$pswdb)){ return "error|<li>Impossibile connettersi al database.</li>"; }else{ $tables=array("user_registry","company_registry"); include "tables.php"; foreach($tables as $table){ $create_table=tables($table); return $create_table; if($create_table!=""){ if(!$db->query($create_table)) return "error|<li>Si è verificato un errore nel creazione delle tabella '$table', riprova.</li>"; } } unset($sql); $db->disconnect(); unset($db); }}
Ora vi posto il file db dove viene effettivamente fatta la connessione al database:
Codice PHP:
class database{
public $host="localhost";
public $user="root";
public $dbcomm;
public $result;
function connect($namedb,$password){
$this->dbcomm=mysqli_connect($this->host,$this->user,$password,$namedb) or die (mysqli_error());
}
function query($query){
$this->result=mysqli_query($this->dbcomm,$query);
if(!$this->result){
return mysqli_error();
}else{
return $this->result;
}
}
function mres($text){
return mysqli_real_escape_string($this->dbconn, $text);
}
function disconnect()
mysqli_close($this->dbcomm);
}
}
voglio precisare che se il nome database e la password la metto nella classe come variabile pubblica funziona correttamente, e possibile che lo script php viene eseguito prima che il database venga creato realmente?