Я искал сеть, и до сих пор я видел, что вы можете использовать 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
.