Ciao, mi sono appena iscritto...
ho un problema con mysqli e php
Allora, la mia idea era quella di utilizzare due funzioni, le seguenti, una per creare la connessione e collegarmi al db e l'altra per eseguire uan query.
Questo perchè, in base alla stringa che passo alle funzioni ($extension, con valori "mysql" o "mysqli") voglio scegliere il codice adatto all'estensione scelta.
Codice PHP:
function ConnectToMysqlDB($extension)
{
include("include/dbconfig.inc.php");
// $extension ==> 'MYSQL' o 'MYSQLi'
switch ($extension) {
case "mysqli":
$connessione = new mysqli($db_host,$db_user,$db_password,$db_name);
// controllo l'esito della connessione
if (mysqli_connect_errno()) $connection_error = 'Error while connecting to MySql Database:'.mysqli_error();
case "mysql":
$connessione = @mysql_connect($db_host,$db_user,$db_password);
@mysql_select_db ($db_name,$connessione);
if (trim(mysql_error()) != ""){
$connection_error = 'Error while connecting to MySql Database:'.mysql_error();
return false;
}
break;
}
//echo gettype($connessione)." - ".$connessione;
return $connessione;
}
function RunQuery($extension,$connessione,$sql_query)
{
// $extension ==> 'MYSQL' o 'MYSQLi'
//echo gettype($connessione)." - ".$connessione;
switch ($extension) {
case "mysqli":
$result = $connessione->query($sql_query);
break;
case "mysql":
$result = @mysql_query($sql_query,$connessione);
break;
}
return $result;
}
Se uso mysql nessun problema, va tutto liscio, ma appena uso mysqli:
Codice PHP:
include("include/dbFunctions.inc.php"); // il file con le funzioni
$connessione = ConnectToMysqlDB($MysqlExt);
$result = RunQuery($MysqlExt,$connessione,$sql_query);
Allora, la variabile $MysqlExt ha valore "mysqli", quando chiamo RunQuery, ricevo il seguente errore:
"Fatal error: Call to a member function query() on a non-object in C:\Programmi\Apache Group\Apache2\test\myfanart\include\dbFunctions.in c.php on line 47"
che è la riga
$result = $connessione->query($sql_query);
nella funzione RunQuery
Se invece chiamo direttamente la funzione
$connessione = new mysqli($db_host,$db_user,$db_password,$db_name);
fuori dalla funzione e poi chiamo RunQuery passandogli l'id di connessione $connessione, allora funziona tutto?
Che cosa sbaglio?
Grazie in anticipo