2014-10-20 13 views
5

Ecco un modello di MySQL in PHP:versione mysqli del modello mysql

$username="username"; 
$password="password"; 
$database="username-databaseName"; 

// Opens a connection to a mySQL server 
$connection=mysql_connect (localhost, $username, $password); 
if (!$connection) { 
    die("Not connected : " . mysql_error()); 
} 

// Set the active mySQL database 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
    die ("Can\'t use db : " . mysql_error()); 
} 

// Search the rows in the markers table 
$query = some query 
$result = mysql_query($query); 

Ho provato a sostituire la maggior parte di esso con un modello mysqli e poi attaccare la parte di query in fondo in questo modo:

//Database Information 
$db_host = "localhost"; //Host address (most likely localhost) 
$db_name = "username-databaseName"; //Name of Database 
$db_user = "username"; //Name of database user 
$db_pass = "password"; //Password for database user 

/* Create a new mysqli object with database connection parameters */ 
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name); 
GLOBAL $mysqli; 

if ($mysqli->connect_errno) { 
     echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>"; 
     exit(); 
    } 

// Search the rows in the markers table 
$query = some query 
$result = mysql_query($query); 

Tuttavia, ricevo questo messaggio di errore:

Invalid query: No database selected 

che cosa sto facendo di sbagliato?

+3

Hai ancora 'mysql_query' nel vostro * * mysqli codice. Vuoi '$ mysqli-> query()'/'mysqli_query()'. Idealmente, ti consigliamo di utilizzare istruzioni preparate (supponendo che stai passando alcuni parametri di query) invece di eseguire direttamente le query. Vedi http://php.net/manual/mysqli.quickstart.prepared-statements.php – Phil

+0

@Phil ha senso, grazie. –

risposta

2

Prima di tutto, chiami mysql_query e non mysqli_query, come previsto.

In secondo luogo, dal momento che si sta utilizzando il modulo orientato agli oggetti, è necessario chiamare mysqli_query come metodo:

$result = $mysqli->query($query); 
+0

I moduli procedurali e OOP sono intercambiabili. Le funzioni procedurali semplicemente proxy il metodo chiama comunque. – Phil