2009-12-29 31 views
5

¿Cuáles son las diferencias/ventajas de cada uno? Desventajas?MySQL vs MySQLi en PHP

No estoy buscando preferencias de codificación o respuestas subjetivas.

¿Cuáles son prácticos diferencias? (Almacenamiento, implementación, cómo se ve el código, requisitos del entorno ...)

+0

también * [MySQL vs MySQLi al usar PHP] (http://stackoverflow.com/questions/548986/mysql-vs-mysqli-when-using-php) * –

Respuesta

11

Puede usar prepared statements con mysqli. También hay un function to store large (blob) data que la "vieja" extensión mysql no tiene.

// 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, Pregunta de bonificación: ¿cómo configuraría MySQLi si tengo MySQL instalado? ¿Puede usar las funciones de MySQLi para llamar a bases de datos MySQL? – Moshe

+0

Puede usar ambos módulos para conectarse a un servidor MySQL. mysqli es "solo" un módulo php que puedes compilar en el núcleo php o cargar como un módulo. p.ej. * Las distribuciones de nix a menudo tienen paquetes de nombre de módulo de php que puede instalar a través del administrador de paquetes de ditribution. – VolkerK

9

Lea el manual overview en PHP, responde la mayoría de las preguntas y tiene un cuadro de comparación.

+0

A partir de ese panorama: "Si están usando las versiones de MySQL 4.1.3 o posteriores, se recomienda enfáticamente que use la extensión mysqli en su lugar ". – Oscar

3

Las declaraciones preparadas están disponibles en mysqli, por ejemplo. También puede usar la interfaz OO para que en lugar de mysql_foo_bar() tenga $con->foo_bar().