113 votes

Puis-je mélanger les API MySQL en PHP ?

J'ai cherché sur le net et jusqu'à présent, ce que j'ai vu c'est que vous pouvez utiliser mysql_ y mysqli_ ensemble signifie :

<?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";
?>

Sont valides mais quand j'utilise ce code, ce que j'obtiens est :

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

Pour le premier et le même sauf avec mysqli_close() . Pour le second.

Quel est le problème ? Je ne peux pas utiliser mysql_ y mysqli ensemble ? Ou est-ce normal ? Y a-t-il un moyen de vérifier si les connexions sont valides ? (le if(mysq...) )

71voto

Explosion Pills Points 89756

Non, vous ne pouvez pas utiliser mysql y mysqli ensemble. Ce sont des API distinctes et les ressources qu'elles créent sont incompatibles entre elles.

Il existe un mysqli_close mais

16voto

Rizier123 Points 41036

Juste pour donner une réponse générale sur les trois API de MYSQL avec une référence :

Vous ne pouvez pas mélanger les trois ( mysql_* , mysqli_* , PDO ) MYSQL API's from PHP together, it just doesn't work. C'est même dans le FAQ du manuel :

C'est pas possible de mélanger les extensions . Ainsi, par exemple, en passant une connexion mysqli à PDO_MySQL ou ext/mysql ne fonctionnera pas .


Vous devez utiliser la même API MySQL et ses fonctions connexes, de la connexion à l'interrogation.

2voto

Techniquement, vous pouvez utiliser autant de connexions distinctes que vous le souhaitez, alors que votre problème est dû à une simple coquille - vous ne pouvez seulement pas utiliser les ressources d'une extension avec les fonctions d'une autre, ce qui est tout à fait évident.

Cependant, vous doit éviter les connexions multiples à partir du même script. qu'il s'agisse d'une seule API ou de plusieurs. En effet, cela va surcharger votre serveur de base de données et épuiser ses ressources. Donc, bien que techniquement vous puissiez le faire, vous ne devriez pas mélanger différentes extensions dans votre code, sauf pour la courte période de refactoring.

-3voto

MySQLi est beaucoup plus sûr que MySQL qui est de toute façon maintenant déprécié. C'est pourquoi vous devriez vous en tenir à MySQLi et aussi vous ne pouvez pas les mélanger car ils sont tous deux différents.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X