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

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

Однако есть mysqli_close .

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

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

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


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

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

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

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

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

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