¿Puedo mezclar API de MySQL en PHP?

Resuelto N3mo asked hace 54 años • 4 respuestas

He buscado en la red y hasta ahora lo que he visto es que se puede usar mysql_y mysqli_juntos significando:

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>

o

<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysqli_close($con);
echo "Done";
?>

Son válidos pero cuando uso este código lo que obtengo es:

Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done

Para el primero y lo mismo excepto con mysqli_close(). Para el segundo.

¿Cuál es el problema? ¿ No puedo usar mysql_y mysqlijuntos? ¿O es normal? ¿Es la forma en que puedo verificar si las conexiones son válidas? (el if(mysq...))

N3mo avatar Jan 01 '70 08:01 N3mo
Aceptado

No, no puedes usar mysqly mysqlijuntos. Son API independientes y los recursos que crean son incompatibles entre sí.

Sin embargo, hay un mysqli_close.

Explosion Pills avatar Jul 05 '2013 23:07 Explosion Pills

Solo para dar una respuesta general aquí sobre las tres API de MYSQL con una referencia:

No puede mezclar ninguna de las tres ( ,, mysql_*) API MYSQL de PHP, simplemente no funciona. Incluso está en las preguntas frecuentes del manual :mysqli_*PDO

No es posible mezclar las extensiones . Entonces, por ejemplo, pasar una conexión mysqli a PDO_MySQL o ext/mysql no funcionará .


Debe utilizar la misma API de MySQL y sus funciones relacionadas, desde la conexión hasta la consulta.

  • http://php.net/manual/en/mysqlinfo.api.choosing.php
Rizier123 avatar Jul 09 '2015 13:07 Rizier123

Técnicamente puedes usar tantas conexiones separadas como quieras, mientras que tu problema es causado por un simple error tipográfico: solo no puedes usar recursos de una extensión con funciones de otra, lo cual es bastante obvio.

Sin embargo, debes evitar múltiples conexiones desde el mismo script , sin importar desde una API única o desde otras diferentes. Ya que cargará su servidor de base de datos y agotará sus recursos. Entonces, aunque técnicamente puedes, no debes mezclar diferentes extensiones en tu código, salvo durante el corto período de refactorización.

Your Common Sense avatar Jul 09 '2015 14:07 Your Common Sense