Можно ли смешивать 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 и связанные с ним функции, от подключения к запросам.

  • http://php.net/manual/en/mysqlinfo.api.choosing.php

2

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

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


-1

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

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


-1

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

PHP, MySQL, PDO, MySQLi,
Похожие вопросы
Яндекс.Метрика