- У вас есть все время в мире, так как они никогда не перестанут работать самостоятельно!
- Да, есть несколько способов сделать это.
- Да, но нет решения одного размера для всех. Каждая ситуация различна, и то, что подходит для вас в конкретной ситуации, может быть неуместным для каждой ситуации.
Во-первых, старый внутр/MySQL является устаревшим PHP 5.5.0, но она никогда не перестанет работать полностью как расширение сама в конечном итоге будет перемещен в PHP PECL repository (, когда приходит время, чтобы удалить его). Тем не менее, мы еще не находимся, и вас могут затронуть только тогда, когда вы решили перейти на эту версию PHP. Точного времени, установленного для удаления расширения, не существует.
Во-вторых, вы можете использовать переменную для хранения соединения с базой данных так же, как старое расширение ext/mysql выполняло для вас за кулисами. Фокус в том, что вы не знали о том, что он делает (он использует последнее открытое соединение, которое вы создали при вызове mysql_connect, и использует его каждый раз, когда вы вызываете что-то вроде mysql_query для доступа к базе данных).
Вы можете сделать это с помощью статической переменной в функции, используя процедурный стиль ....
function openDBConn() {
static $link;
if (!isset($link)) {
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
}
return $link; // returns the link
}
Или вы можете сделать это с помощью класса статической переменной с использованием ООП ...
Class MyDBConnect {
public static $link;
public function openDBConn() {
if (!isset(static::$link)) {
static::$link = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
}
}
}
Я хочу призвать вас использовать новые API, и я благодарю вас за это, но я также хочу предупредить вас, когда вы продвигаетесь вперед. Когда вы начинаете переносить свои функции из старых функций ext/mysql на новое расширение mysqli, будьте осторожны, чтобы не переносить и неправильные методы старого расширения (например, используя старую конкатенацию строк SQL и методы экранирования ext/mysql). Вместо этого воспользуйтесь MySQLi prepared statements and parameterized queries.
Я хочу обратить ваше внимание на преимущества использования новых API-интерфейсов для взаимодействия с вашей базой данных MySQL (а именно PDO and MySQLi).
Семейство функций 'mysql_' будет устарело в 5.5 и может быть полностью удалено в любой последующей * основной * версии. Рассмотрение 5.5 даже не в бета-версии, а релиз * после *, который находится в отключенном состоянии, вам не нужно паниковать. Примите это хорошо и медленно, и учитесь в своем собственном темпе. Кроме того, проверьте каждый последний из этих вопросов на боковой панели ** Related **. Они помогут. – Charles
Также обратите внимание на [PDO] (http://php.net/book.pdo) вместо mysqli. Они оба настолько же способны, но подготовленный синтаксис инструкции PDO намного, гораздо более дружелюбный. PDO - только OO- * * и не имеет процедурного отступления, такого как mysqli. – Charles