Je reçois cet avertissement, mais le programme fonctionne toujours correctement.
Le code MySQL me montre un message en PHP:
Déconseillé: mysql_connect (): L'extension mysql est obsolète et sera supprimée à l'avenir: utilisez mysqli ou PDO à la place dans C:\xampp\htdocs\task\media\new\connect.inc.php on line 2
Ma page connect.inc.php
est
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Qu'est-ce que cela signifie et comment puis-je éliminer le message?
Il existe quelques solutions à votre problème.
Voici comment cela fonctionne avec MySQLi:
<?php
$connection = mysqli_connect('localhost', 'username', 'password', 'database');
Exécuter des requêtes de base de données est également simple et presque identique à l'ancien:
<?php
// Old way
mysql_query('CREATE TEMPORARY TABLE `table`', $connection);
// New way
mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');
Désactivez tous les avertissements obsolètes, y compris ceux de mysql_ *:
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
Le fichier exact et l'emplacement de la ligne à remplacer sont "/ System/Startup.php> line: 2" error_reporting (E_All); remplace par error_reporting (E_ALL ^ E_DEPRECATED);
Vous pouvez supprimer l'avertissement en ajoutant un "@" avant mysql_connect.
@mysql_connect('localhost','root','');
mais comme l'avertissement vous l'indique, utilisez mysqli ou PDO car l'extension mysql sera supprimée à l'avenir.
Pour supprimer le message de désapprobation pour ce seul message (et rester informé des autres dépréciations de votre code), vous pouvez préfixer la connexion avec @:
<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Fonctions obsolètes dans PHP 5.5.x
L'extension MySQL d'origine est maintenant obsolète et générera des erreurs E_DEPRECATED
lors de la connexion à une base de données. À la place, utilisez les ** MYSQLi ou PDO_MySQL extensions. **
Syntaxe:
<?php
$connect = mysqli_connect('localhost', 'user', 'password', 'dbname');
De plus, remplace toutes les fonctions mysql_*
par des fonctions mysqli_*
au lieu de
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Cet avertissement est affiché car une nouvelle extension est apparue. Cela suppose que vous puissiez toujours utiliser l’ancien mais dans certains cas, c’est impossible.
Je vous montre comment je fais la connexion avec la base de données. Vous devez simplement changer les valeurs des variables.
Mon fichier de connexion: 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);
?>
L'extension change également lors de l'exécution d'une requête.
Fichier de requête: "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");
?>
Cette méthode utilise MySQL Improved Extension, mais vous pouvez utiliser PDO (PHP Data Objects).
La première méthode ne peut être utilisée qu'avec des bases de données MySQL, mais PDO peut gérer différents types de bases de données.
Je vais donner un exemple, mais il est nécessaire de dire que je n’utilise que le premier, alors corrigez-moi s’il ya une erreur.
Mon fichier de connexion 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);
?>
Fichier de requête (PDO): "example.php"
<?php
$query = "Here the query you are going to perform";
$result=$connection->$query;
?>
Pour finir, dites simplement que vous pouvez masquer l’avertissement, mais que ce n’est pas une bonne idée, car cela peut vous aider à gagner du temps si une erreur se produit (nous connaissons tous la théorie, mais si vous travaillez parfois de nombreuses heures .. Le cerveau n'est pas là ^^).
Les fonctions mysql_*
sont obsolètes à partir de 5.5.0
mysql_ *, est officiellement déconseillé à partir de PHP v5.5.0 et sera supprimé ultérieurement.
Utilisez la fonction mysqli _ * ou pdo
Lire Oracle Conversion en MySQLi
La classe PDO remplace ces méthodes. Exemple pour Mysql ou 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
));
Source: classe PDO
C'est juste un avertissement qui vous dit de commencer à utiliser de nouvelles méthodes de connexion à votre base de données telles que les objets pdo
http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338
Le manuel est ici
L'avertissement "obsolète" signifie en général que vous essayez d'utiliser une fonction obsolète. Cela ne signifie pas que votre code ne fonctionnera pas, mais vous devriez envisager de le refactoriser.
Dans votre cas, les fonctions mysql_ sont obsolètes. Si vous voulez en savoir plus à ce sujet, voici déjà une bonne explication: Pourquoi ne devrais-je pas utiliser les fonctions mysql_ * en PHP?
<?php
$link = mysqli_connect('localhost','root','');
if (!$link) {
die('Could not connect to MySQL: ' . mysqli_error());
}
echo 'Connection OK'; mysqli_close($link);
?>
Cela résoudra votre problème.
Si vous avez fait votre codage alors
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
c'est une bonne option, mais si vous débutez, vous devez absolument utiliser mysqli.
Eh bien, je viens de faire face à un tel message aujourd'hui quand je suis passé à un nouvel hébergement! Quoi qu'il en soit, j'ai essayé de remplacer "mySQL" par "mySQLi" mais cela ne fonctionnait pas. J'ai donc fait ceci:
<?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);
?>
L'astuce consiste à désactiver le signalement des erreurs :)
# Turn off all error reporting
error_reporting(0);