web-dev-qa-db-ja.com

MySQL APIをPHPに混在させることはできますか?

私はネットを検索しましたが、これまでのところ、mysql_mysqli_を一緒に使用できるということです。

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

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

または

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

有効ですが、このコードを使用すると、次のようになります。

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

mysqli_close()を除き、最初と同じ場合。 2番目の。

何が問題ですか? mysql_mysqliを一緒に使用することはできませんか?それとも正常ですか?接続がまったく有効かどうかを確認する方法はありますか? (if(mysq...)

101
N3mo

いいえ、mysqlmysqliを一緒に使用することはできません。これらは別個のAPIであり、作成するリソースは互いに互換性がありません。

mysqli_close、しかし。

62
Explosion Pills

ここで、3つのMYSQL APIすべてについて、参照を付けて一般的な答えを示します。

3つ( mysql_*mysqli_*PDO )MYSQL APIのPHPを一緒に使用すると、動作しません。 マニュアルFAQ

拡張機能を混在させることはできません。そのため、たとえば、mysqli接続をPDO_MySQLまたはext/mysqlに渡すと機能しません


接続からクエリまで、同じMySQL APIとその関連機能を使用する必要があります。

12
Rizier123

技術的には、必要なだけ多くの個別の接続を使用できますが、問題は単なるタイプミスに起因します。ある拡張機能のリソースを別の拡張機能からのみ使用することはできません。

ただし、同じスクリプトからの複数の接続を避ける必要があります、単一のAPIからでも、異なるAPIからでも。データベースサーバーに負荷がかかり、リソースが使い果たされるためです。そのため、技術的には可能ですが、コードにさまざまな拡張機能を混在させないでください。短いリファクタリングのために保存する必要があります。

2