Можно ли смешивать 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...))

Ответ 1

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

Однако существует mysqli_close.

Ответ 2

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

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

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


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

Ответ 3

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

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

Ответ 4

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

Ответ 5

с моей стороны я думаю, что вы можете, но вам придется делать файлы для подключения к потому что mysqli_* будет принимать только mysqli_connect и поэтому с mysql_*

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