Domanda niubba probabilmente: sto giocherellando con OO_php e trovo qualche difficoltà.
Scenario: ho due classi, una che gestisce le connessioni al database ed una che gestisce un login.
La classe che gestisce la connessione a DB è:
Codice PHP:
class DB_Connect {
//Default values
private $db_host;
private $db_name;
private $db_user;
private $db_pass;
private $db;
public function DB_Connect($db_host, $db_name, $db_user, $db_pass) {
$this->db = mysql_connect($db_host, $db_user, $db_pass) or die (mysql_error()."
Unable to connect to the specified host using:
HOST: '$db_host'
USER: '$db_user'
PASS: '$db_pass'");
mysql_select_db($db_name) or die(mysql_error()."
Unable to select the specified DATABASE: '$db_name'");
$db_charset = mysql_query( "SHOW VARIABLES LIKE 'character_set_database'" );
$charset_row = mysql_fetch_assoc( $db_charset );
mysql_query( "SET NAMES '" . $charset_row['Value'] . "'" );
unset( $db_charset, $charset_row );
}
public function getConnection() {
return $this->db;
}
public function doQuery($query) {
$result = mysql_query($query, $this->db) or die(mysql_error()."
Error while executing: ".$query);
return $result;
}
public function disconnect() {
mysql_close($this->db);
}
}
la classe che gestisce il login ha un metodo statico che gestisce i casi di password dimenticata e generazione nuova password.
Posto solo quello perché il resto funziona egregiamente
Codice PHP:
public static function forgottenPassword($connection, $email, $table) {
$query = "SELECT id FROM {$table} WHERE email='{$email}'";
$result = $connection->doQuery($query);
// segue altro codice ma tanto non ci arrivo, mi becco un errore prima
Veniamo al dunque. Nella pagina di login ho questo (solo l'inizio della pagina):
Codice PHP:
<?php
include("../includes/config.inc.php");
session_start();
$db = new DB_Connect($db_host, $db_name, $db_user, $db_pass);
$_SESSION['db'] = $db;
Ovvero metto in sessione l'oggetto connessione per poterlo riutilizzare (o così mi illudo)
Nella pagina di recupero password:
Codice PHP:
<?php
include("../includes/config.inc.php");
session_start();
$db = $_SESSION['db'];
if(isset($_POST['submit'])) {
Login::forgottenPassword($db, $_POST['username'], "users");
}
?>
Quello che succede quando provo tale codice è che ricevo un bell'errore:
codice:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in E:\Andrea\Documents\Siti\sito_test\includes\config.inc.php on line 33
per intenderci, la riga 33 è la riga del metodo doQuery dove verrebbe eseguita la query. A me sembra di essere coerente e consistente nell'utilizzo di un oggetto di tipo DB_Connect, ma apparentemente la giostra si rompe da qualche parte.