Устаревший: mysql_connect()
Я получаю это предупреждение, но программа все еще работает правильно.
Код 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');
?>
Что это значит и как я могу удалить сообщение?
Ответы
Ответ 1
Есть несколько решений вашей проблемы.
Путь с 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);
Ответ 2
Вы можете удалить предупреждение, добавив '@' перед mysql_connect.
@mysql_connect('localhost','root','');
но, как предупреждает вам предупреждение, используйте mysqli или PDO, поскольку расширение mysql будет удалено в будущем.
Ответ 3
Чтобы подавить сообщение об устаревании только для этого (и оставайтесь в курсе других устареваний в коде), вы можете префикс подключения с помощью @:
<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Ответ 4
Устаревшие функции в 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');
?>
Ответ 5
Это предупреждение отображается потому, что появилось новое расширение.
Предполагается, что вы все еще можете использовать старый, но в некоторых случаях это невозможно.
Я покажу вам, как я делаю связь с базой данных. Вам просто нужно изменить значения переменных.
Мой файл подключения: 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;
?>
В завершение просто скажите, что, конечно, вы можете скрыть предупреждение, но это не очень хорошая идея, потому что может помочь вам в будущем сэкономить время, если произойдет ошибка (все мы знаем теорию, но если вы работаете много часов иногда... мозга там нет ^^).
Ответ 6
Это потому, что вы используете PHP 5.5 или ваш веб-сервер был бы обновлен до 5.5.0.
Функции mysql_*
устарели от 5.5.0
![enter image description here]()
Source
Ответ 7
mysql_ *, официально устарел с PHP v5.5.0 и будет удален в будущем.
Используйте mysqli_ * или pdo
Прочитайте Oracle Преобразование в MySQLi
Ответ 8
Это просто предупреждение о том, что вы начинаете использовать новые методы подключения к вашему db, такие как объекты 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
Ответ 9
Предупреждение "устарело" вообще означает, что вы пытаетесь использовать устаревшую функцию. Это не означает, что ваш код не будет работать, но вы должны подумать о рефакторинге.
В вашем случае functons mysql_ устарели. Если вы хотите узнать больше об этом, вот хорошее объяснение: Почему бы мне не использовать функции mysql_ * в PHP?
Ответ 10
<?php
$link = mysqli_connect('localhost','root','');
if (!$link) {
die('Could not connect to MySQL: ' . mysqli_error());
}
echo 'Connection OK'; mysqli_close($link);
?>
Это решит вашу проблему.
Ответ 11
Ну, я только что столкнулся с таким сообщением сегодня, когда я переехал на новый хостинг! во всяком случае, я пытался изменить "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);
Спасибо
Ответ 12
Класс 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
Ответ 13
Если вы сделали свое кодирование,
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
хороший вариант, но если вы в начале, то определенно вы должны использовать mysqli.
Ответ 14
поместите это на свою php-страницу.
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
Ответ 15
Добавление @
работает для меня!
Я тестировал с помощью error_reporting(E_ALL ^ E_DEPRECATED);