2009-12-29 5 views
5

Quelles sont les différences/avantages de chacun? Désavantages? Je ne suis pas à la recherche de préférences de codage ou de réponses subjectives.MySQL vs MySQLi en PHP

Quels sont pratique diferences? (Stockage, implémentation, apparence du code, exigences d'environnement ...)

+0

Aussi * [MySQL vs MySQLi lorsque vous utilisez PHP] (http://stackoverflow.com/questions/548986/mysql-vs-mysqli-when-using-php) * –

Répondre

11

Vous pouvez utiliser prepared statements avec mysqli. Il y a aussi un function to store large (blob) data que l'ancienne extension mysql n'a pas.

// php-mysql: no oo-interface 
$mysqli = new mysqli('localhost', 'localonly', 'localonly'); 
if ($mysqli->connect_error) { 
    die($mysqli->connect_error); 
} 

// php-mysql: no prepared statements 
$stmt = $mysqli->prepare("INSERT INTO foo (mydata) VALUES (?)"); 
$stmt->bind_param("b", $null); 

// php-mysql: no function to send data in chunks 
$fp = fopen("php://input", "r"); 
while (!feof($fp)) { 
    $chunk = fread($fp, 4096); 
    $stmt->send_long_data(0, $chunk); 
} 
$stmt->execute(); 
+0

+1, Question Bonus - Comment installer MySQLi si MySQL est installé? Peut utiliser les fonctions MySQLi pour appeler les bases de données MySQL? – Moshe

+0

Vous pouvez utiliser les deux modules pour vous connecter à un serveur MySQL. mysqli est "seulement" un module php que vous pouvez soit compiler dans le noyau php ou charger comme un module. par exemple. * Les distributions nix ont souvent des paquets php-modulename que vous pouvez installer via le gestionnaire de paquets de la distribution. – VolkerK

9

Lisez le overview sur le manuel PHP, il répond à la plupart des questions et dispose d'un tableau comparatif.

+0

De cet aperçu: « Si vous utilisez les versions 4.1.3 ou ultérieures de MySQL, il est fortement recommandé d'utiliser l'extension mysqli à la place. " – Oscar

3

Les instructions préparées sont disponibles dans mysqli, pour un. Vous pouvez également utiliser l'interface OO, donc au lieu de mysql_foo_bar() vous avez $con->foo_bar().