Obsolète: mysql connect()
je reçois cet avertissement, mais le programme fonctionne toujours correctement.
le code MySQL me montre un message en PHP:
déprécié: mysql_connect (): l'extension mysql est dépréciée et sera supprimé à l'avenir: utilisez mysqli ou AOP à la place dans C:xampphtdocstaskmedianewconnect.Inc.php sur la ligne 2
Mon connect.inc.php
page
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
quoi est-ce que cela signifie Et Comment puis-je éliminer le message?
15 réponses
il y a peu de solutions pour votre problème.
La manière avec MySQLi serait comme ceci:
<?php
$connection = mysqli_connect('localhost', 'username', 'password', 'database');
pour exécuter des requêtes de base de données est aussi simple et presque identique à l'ancienne manière:
<?php
// Old way
mysql_query('CREATE TEMPORARY TABLE `table`', $connection);
// New way
mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');
désactiver tous les Avertissements dépréciés, y compris ceux de mysql_*:
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
vous pouvez supprimer l'avertissement en ajoutant un '@' avant le mysql_connect.
@mysql_connect('localhost','root','');
mais comme l'avertissement vous le dit, utilisez mysqli ou PDO puisque l'extension mysql sera supprimée à l'avenir.
pour supprimer le message de dévalorisation pour cette seule raison (et rester informé des autres dévalorisations dans votre code), vous pouvez préfixer le connect avec@:
<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
fonctions obsolètes en PHP 5.5.x
l'extension MySQL originale est maintenant dépréciée, 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');
aussi, remplacer toutes les fonctions mysql_*
par mysqli_*
fonctions
au lieu de
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
Cet avertissement est affiché, parce qu'une nouvelle extension est apparu. Il suppouse que vous pouvez toujours utiliser l'ancien, mais dans certains cas, impossible.
je vous montre comment je fais la connexion avec la base de données. Il suffit de changer les valeurs des variables.
mon fichier de connexion: connexion.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 aussi lors de l'exécution d'une requête.
Fichier d'interrogation: " exemple.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 façon utilise extension améliorée MySQL , mais vous pouvez utiliser PDO (PHP Data Objects) .
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 mettre un exemple mais il est nécessaire de dire que je n'utilise que le premier, alors s'il vous plaît corriger moi si il y a une erreur.
mon fichier de connexion AOP: " 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 D'interrogation (AOP): " exemple.php "
<?php
$query = "Here the query you are going to perform";
$result=$connection->$query;
?>
pour finir, il suffit de dire que, bien sûr, vous pouvez cacher l'avertissement, mais ce n'est pas une bonne idée, car peut vous aider à l'avenir gagner du temps si une erreur se produit (nous connaissons tous la théorie, mais si vous travaillez beaucoup d'heures parfois... le cerveau n'est pas là ^ ^ ).
C'est parce que vous utilisez PHP 5.5 ou votre serveur web aurait été mis à jour à 5.5.0.
les fonctions mysql_*
ont été dépréciées à partir de 5.5.0
mysql_*, est officiellement obsolète de PHP v5.5.0 et sera supprimée dans le futur.
Utiliser mysqli_* "151920920 de la fonction" ou aop
Lire Oracle Conversion à MySQLi
C'est juste un avertissement qui vous dit de commencer à utiliser de nouvelles méthodes de connexion à votre base de données tels que les objets AOP
http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338
le manuel est ici
Avertissement "obsolète" signifie en général que vous essayez d'utiliser une fonction qui est obsolète. Cela ne signifie pas que votre code ne fonctionnera pas, mais vous devriez envisager un remaniement.
dans votre cas, les fonctions mysql_ sont dépréciées. 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.
Eh bien, je viens de faire face à un tel message aujourd'hui quand je suis déménagé à la nouvelle hébergement! quoi qu'il en soit, j'ai essayé de changer le "mySQL" en "mySQLi" mais cela n'a pas fonctionné, alors j'ai 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);
?>
le truc est de désactiver le rapport d'erreur:)
# Turn off all error reporting
error_reporting(0);
AOP 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 AOP
si vous avez fait votre codage alors
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
est une bonne option mais si vous êtes au début alors certainement vous devriez utiliser mysqli.
mettez ceci dans votre page php.
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
Ajouter un @
marche pour moi!
j'ai testé avec error_reporting(E_ALL ^ E_DEPRECATED);