Можно ли смешивать API MySQL в 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(). Для второго.

В чем проблема? Разве я не могу использовать mysql_и mysqliвместе? Или это нормально? Я могу проверить, действительно ли соединения действительны? ( if(mysq...))

php,mysql,pdo,mysqli,

84

Ответов: 5


54 принят

Нет, вы не можете использовать mysqlи mysqliвместе. Они представляют собой отдельные API-интерфейсы, и создаваемые ими ресурсы несовместимы друг с другом.

Есть mysqli_close, правда.


11 ов

Просто, чтобы дать общий ответ здесь обо всех трех API mysql_ * со ссылкой:

Вы не можете смешивать любого из трех ( mysqli_*, mysqli_*, PDO) MYSQL API от PHP вместе, он просто не работает. Это даже в руководстве FAQ :

Это не возможно смешивать расширения . Так, например, передача mysql_ * соединения с PDO_MySQL или ext / mysql не будет работать .


Вам нужно использовать тот же API MySQL и связанные с ним функции, от подключения к запросам.


2

Технически вы можете использовать столько отдельных соединений, сколько хотите, в то время как ваша проблема вызвана простой опечаткой - вы не можете использовать ресурсы только из одного расширения с функциями из другого, что вполне очевидно.

Однако вам следует избегать нескольких подключений от одного и того же сценария , независимо от одного API или другого. Поскольку это будет обременять ваш сервер базы данных и исчерпывать его ресурсы. Итак, хотя технически вы можете, вы не должны смешивать разные расширения в своем коде, за исключением короткого периода рефакторинга.


-1

с моей стороны я думаю , что вы можете , но вы должны сделать , чтобы файлы для соединения с
базой данных , поскольку MySQLiбудет только принимать MySQLи так сMySQLi

вы можете попробовать учиться PDO Better


-1

MySQLiнамного безопаснее, чем MySQLв любом случае теперь не рекомендуется. Вот почему вы должны придерживаться, MySQLiа также вы не можете смешивать их, поскольку они оба разные.

PHP, MySQL, PDO, MySQLi,