Я получаю это предупреждение, но программа по-прежнему работает правильно.
Код MySQL показывает мне сообщение на PHP:
Устарело: mysql_connect (): расширение mysql устарело и будет удалено в будущем: используйте вместо него mysqli или PDO в C: \ xampp \ htdocs \ task \ media \ new \ connect.inc.php в строке 2
Моя connect.inc.php
страница
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Что это означает и как я могу избавиться от сообщения?
php
mysql
function
deprecated
Мубашар Ахмед Хасан
источник
источник
Ответы:
Есть несколько вариантов решения вашей проблемы.
Путь с MySQLi будет таким:
<?php $connection = mysqli_connect('localhost', 'username', 'password', 'database');
Запускать запросы к базе данных также просто и почти идентично старому способу:
<?php // Old way mysql_query('CREATE TEMPORARY TABLE `table`', $connection); // New way mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');
Отключите все устаревшие предупреждения, включая их из mysql_ *:
<?php error_reporting(E_ALL ^ E_DEPRECATED);
Точное расположение файла и строки, которое необходимо заменить: "/System/Startup.php> line: 2" error_reporting (E_All); заменить на error_reporting (E_ALL ^ E_DEPRECATED);
источник
Вы можете удалить предупреждение, добавив '@' перед mysql_connect.
@mysql_connect('localhost','root','');
но, как сказано в предупреждении, используйте mysqli или PDO, поскольку расширение mysql будет удалено в будущем.
источник
Чтобы подавить сообщение об устаревании только для этого (и быть в курсе других устаревших рекомендаций в вашем коде), вы можете префикс подключения с помощью @:
<?php $connect = @mysql_connect('localhost','root',''); mysql_select_db('dbname'); ?>
источник
Устаревшие функции в PHP 5.5.x
Оригинальное расширение MySQL теперь осуждается, и будет генерировать
E_DEPRECATED
ошибки при подключении к базе данных. Вместо этого используйте расширения ** MYSQLi или PDO_MySQL . **Синтаксис:
<?php $connect = mysqli_connect('localhost', 'user', 'password', 'dbname');
Также замените все
mysql_*
функции наmysqli_*
функциивместо того
<?php $connect = mysql_connect('localhost','root',''); mysql_select_db('dbname'); ?>
источник
Это предупреждение отображается, потому что появилось новое расширение. Предполагается, что вы все еще можете использовать старую, но в некоторых случаях это невозможно.
Я покажу вам, как я устанавливаю соединение с базой данных. Вам нужно просто изменить значения переменных.
Мой файл подключения : connection.php
<?php $host='IP or Server Name (usually "localhost") '; $user='Database user'; $password='Database password'; $db='Database name'; //PHP 5.4 o earlier (DEPRECATED) $con = mysql_connect($host,$user,$password) or exit("Connection Error"); $connection = mysql_select_db($db, $con); //PHP 5.5 (New method) $connection = mysqli_connect($host,$user,$password,$db); ?>
Расширение также изменяется при выполнении запроса.
Файл запроса: "example.php"
<?php //First I call for the connection require("connection.php"); // ... Here code if you need do something ... $query = "Here the query you are going to perform"; //QUERY PHP 5.4 o earlier (DEPRECATED) $result = mysql_query ($query) or exit("The query could not be performed"); //QUERY PHP 5.5 (NEW EXTENSION) $result = mysqli_query ($query) or exit("The query could not be performed"); ?>
В этом способе используется улучшенное расширение MySQL , но вы можете использовать PDO (объекты данных PHP) .
Первый метод может использоваться только с базами данных MySQL, но PDO может управлять разными типами баз данных.
Я собираюсь привести пример, но необходимо сказать, что я использую только первый, поэтому, пожалуйста, поправьте меня, если есть какая-либо ошибка.
Мой файл подключения PDO: "PDOconnection.php"
<?php $hostDb='mysql:host= "Here IP or Server Name";dbname="Database name" '; $user='Database user'; $password='Database password'; $connection = new PDO($hostDb, $user, $password); ?>
Файл запроса (PDO): "example.php"
<?php $query = "Here the query you are going to perform"; $result=$connection->$query; ?>
В заключение просто скажите, что, конечно, вы можете скрыть предупреждение, но это не очень хорошая идея, потому что это может помочь вам в будущем сэкономить время, если произойдет ошибка (все мы знаем теорию, но если вы иногда работаете много часов ... .мозгов там нет ^^).
источник
Это потому, что вы используете PHP 5.5, иначе ваш веб-сервер был бы обновлен до 5.5.0.
Эти
mysql_*
функции были устаревшие 5.5.0Source
источник
mysql_ * официально считается устаревшим с версии PHP v5.5.0 и будет удален в будущем.
Используйте функцию mysqli_ * или pdo
Читать Oracle преобразование в MySQLi
источник
Это просто предупреждение, которое говорит вам начать использовать новые методы подключения к вашей базе данных, такие как объекты pdo.
http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338
Руководство здесь
http://www.php.net/manual/en/book.pdo.php
источник
Предупреждение "устаревшее" в целом означает, что вы пытаетесь использовать устаревшую функцию. Это не означает, что ваш код не будет работать, но вам следует подумать о рефакторинге.
В вашем случае функции mysql_ устарели. Если вы хотите узнать больше об этом, вот хорошее объяснение: почему бы мне не использовать функции mysql_ * в PHP?
источник
<?php $link = mysqli_connect('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysqli_error()); } echo 'Connection OK'; mysqli_close($link); ?>
Это решит вашу проблему.
источник
Класс PDO заменяет эти методы. Пример для Mysql или MariaDB:
$BDD_SQL = new PDO('mysql:host='.BDD_SQL_SERVER.';dbname='.BDD_SQL_BASE.';charset=utf8', BDD_SQL_LOGIN, BDD_SQL_PWD, array( PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //launch exception if error PDO::ATTR_DEFAULT_FETCH_MODE=> PDO::FETCH_ASSOC ));
Источник: PDO Class
источник
Если вы написали код, то
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
Это хороший вариант, но если вы только начинаете, вам определенно стоит использовать mysqli.
источник
Я столкнулся с таким сообщением сегодня, когда переехал на новый хостинг! в любом случае я попытался изменить «mySQL» на «mySQLi», но не работал, поэтому я сделал это:
<?php # FileName="Connection_php_mysql.htm" # Type="MYSQL" # HTTP="true" # Turn off all error reporting error_reporting(0); $connect_myconn = "Database Connection"; $hostname_myconn = "localhost"; $database_myconn = "db name"; $username_myconn = "user name"; $password_myconn = "pass"; $myconn = mysql_connect($hostname_myconn, $username_myconn, $password_myconn) or die("<h1 style=margin:0;>A MySQL error has occurred.</h1><p><b>Your Query:</b> " . $connect_myconn . "<br /> <b>Error Number:</b> (" . mysql_errno() . ")</p>" . mysql_error()); mysql_select_db($database_myconn, $myconn); ?>
Хитрость в том, чтобы отключить отчеты об ошибках :)
# Turn off all error reporting error_reporting(0);
Для PHP 7+ вместо этого можно использовать этот код:
ini_set('display_errors', 0); ini_set('log_errors', 1);
Благодарность
источник
ini_set('display_errors', 0); ini_set('log_errors', 1);
. Я обновлю ответ выше. Спасибо.поместите это на свою страницу php.
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
источник
Добавление
@
работает для меня!Я тестировал с
error_reporting(E_ALL ^ E_DEPRECATED);
источник