Нет, вы не можете использовать mysql
и mysqli
вместе. Они представляют собой отдельные API-интерфейсы, и создаваемые ими ресурсы несовместимы друг с другом.
Есть mysqli_close
, правда.
Я обыскал сеть, и до сих пор я видел, что вы можете использовать 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...)
)
Просто, чтобы дать общий ответ здесь обо всех трех API mysql_ * со ссылкой:
Вы не можете смешивать любого из трех ( mysqli_*
, mysqli_*
, PDO
) MYSQL API от PHP вместе, он просто не работает. Это даже в руководстве FAQ :
Это не возможно смешивать расширения . Так, например, передача mysql_ * соединения с PDO_MySQL или ext / mysql не будет работать .
Вам нужно использовать тот же API MySQL и связанные с ним функции, от подключения к запросам.
Технически вы можете использовать столько отдельных соединений, сколько хотите, в то время как ваша проблема вызвана простой опечаткой - вы не можете использовать ресурсы только из одного расширения с функциями из другого, что вполне очевидно.
Однако вам следует избегать нескольких подключений от одного и того же сценария , независимо от одного API или другого. Поскольку это будет обременять ваш сервер базы данных и исчерпывать его ресурсы. Итак, хотя технически вы можете, вы не должны смешивать разные расширения в своем коде, за исключением короткого периода рефакторинга.