Otrzymuję to ostrzeżenie, ale program nadal działa poprawnie.
Kod MySQL wyświetla mi wiadomość w PHP:
Przestarzałe: mysql_connect (): rozszerzenie mysql jest przestarzałe i zostanie usunięte w przyszłości: zamiast tego użyj mysqli lub PDO w C: \ xampp \ htdocs \ task \ media \ new \ connect.inc.php w linii 2
Moja connect.inc.php
strona to
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Co to oznacza i jak mogę usunąć ten komunikat?
php
mysql
function
deprecated
Mubashar Ahmed Hassan
źródło
źródło
Odpowiedzi:
Istnieje kilka rozwiązań Twojego problemu.
Sposób z MySQLi wyglądałby tak:
<?php $connection = mysqli_connect('localhost', 'username', 'password', 'database');
Uruchamianie zapytań do bazy danych jest również proste i prawie identyczne ze starym sposobem:
<?php // Old way mysql_query('CREATE TEMPORARY TABLE `table`', $connection); // New way mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');
Wyłącz wszystkie przestarzałe ostrzeżenia, w tym je z mysql_ *:
<?php error_reporting(E_ALL ^ E_DEPRECATED);
Dokładna lokalizacja pliku i wiersza, które należy zastąpić, to "/System/Startup.php> line: 2" error_reporting (E_All); zamień na error_reporting (E_ALL ^ E_DEPRECATED);
źródło
Możesz usunąć ostrzeżenie, dodając „@” przed mysql_connect.
@mysql_connect('localhost','root','');
ale jak mówi ostrzeżenie, użyj mysqli lub PDO, ponieważ rozszerzenie mysql zostanie usunięte w przyszłości.
źródło
Aby pominąć komunikat o zaniechaniu tylko w tym celu (i być informowanym o innych wycofaniach w kodzie), możesz poprzedzić connect znakiem @:
<?php $connect = @mysql_connect('localhost','root',''); mysql_select_db('dbname'); ?>
źródło
Przestarzałe funkcje w PHP 5.5.x.
Oryginalne rozszerzenie MySQL jest teraz przestarzała i będzie generować
E_DEPRECATED
błędy podczas łączenia się z bazą danych. Zamiast tego użyj ** MYSQLi lub PDO_MySQL . **Składnia:
<?php $connect = mysqli_connect('localhost', 'user', 'password', 'dbname');
Ponadto zamień wszystkie
mysql_*
funkcje namysqli_*
funkcjezamiast
<?php $connect = mysql_connect('localhost','root',''); mysql_select_db('dbname'); ?>
źródło
To ostrzeżenie jest wyświetlane, ponieważ pojawiło się nowe rozszerzenie. Przypuszcza się, że nadal możesz używać starego, ale w niektórych przypadkach jest to niemożliwe.
Pokażę ci jak robię połączenie z bazą danych. Wystarczy zmienić wartości zmiennych.
Mój plik połączenia : 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); ?>
Rozszerzenie zmienia się również podczas wykonywania zapytania.
Plik zapytania: „przyklad.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"); ?>
W ten sposób używa się ulepszonego rozszerzenia MySQL , ale możesz użyć PDO (PHP Data Objects) .
Pierwsza metoda może być używana tylko z bazami danych MySQL, ale PDO może zarządzać różnymi typami baz danych.
Podam przykład, ale muszę powiedzieć, że używam tylko pierwszego, więc proszę, popraw mnie, jeśli jest jakiś błąd.
Mój plik połączenia 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); ?>
Plik zapytania (PDO): „example.php”
<?php $query = "Here the query you are going to perform"; $result=$connection->$query; ?>
Na koniec powiedz tylko, że oczywiście możesz ukryć ostrzeżenie, ale nie jest to dobry pomysł, ponieważ może pomóc Ci zaoszczędzić czas w przyszłości, jeśli wystąpi błąd (wszyscy znamy teorię, ale jeśli czasami pracujesz dużo godzin ... . mózg nie istnieje ^^).
źródło
Dzieje się tak, ponieważ używasz PHP 5.5 lub serwer WWW zostałby zaktualizowany do wersji 5.5.0.
Te
mysql_*
funkcje został wycofany z 5.5.0Source
źródło
mysql_ *, jest oficjalnie przestarzałe od wersji PHP 5.5.0 i zostanie usunięte w przyszłości.
Użyj funkcji mysqli_ * lub pdo
Przeczytaj artykuł Oracle Converting to MySQLi
źródło
To tylko ostrzeżenie, które mówi ci, abyś zaczął używać nowszych metod łączenia się z bazą danych, takich jak obiekty pdo
http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338
Instrukcja jest tutaj
http://www.php.net/manual/en/book.pdo.php
źródło
Ostrzeżenie „przestarzałe” ogólnie oznacza, że próbujesz użyć funkcji, która jest nieaktualna. Nie oznacza to, że twój kod nie zadziała, ale powinieneś rozważyć jego refaktoryzację.
W twoim przypadku funkcje mysql_ są przestarzałe. Jeśli chcesz dowiedzieć się więcej na ten temat, oto dobre wyjaśnienie: Dlaczego nie powinienem używać funkcji mysql_ * w PHP?
źródło
<?php $link = mysqli_connect('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysqli_error()); } echo 'Connection OK'; mysqli_close($link); ?>
To rozwiąże twój problem.
źródło
Klasa PDO zastępuje te metody. Przykład dla Mysql lub 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 ));
Źródło: Klasa PDO
źródło
Jeśli skończyłeś już kodowanie
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
to dobra opcja, ale jeśli dopiero zaczynasz, zdecydowanie powinieneś użyć mysqli.
źródło
Cóż, właśnie spotkałem się z taką wiadomością dzisiaj, kiedy przeniosłem się na nowy hosting! w każdym razie próbowałem zmienić „mySQL” na „mySQLi”, ale nie działa, więc zrobiłem to:
<?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); ?>
Rzecz w tym, aby wyłączyć raportowanie błędów :)
# Turn off all error reporting error_reporting(0);
W przypadku PHP 7+ możesz użyć tego kodu:
ini_set('display_errors', 0); ini_set('log_errors', 1);
Dzięki
źródło
ini_set('display_errors', 0); ini_set('log_errors', 1);
. Zaktualizuję powyższą odpowiedź. Dzięki.umieść to na swojej stronie php.
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
źródło
Dodawanie
@
prac dla mnie!Testowałem z
error_reporting(E_ALL ^ E_DEPRECATED);
źródło