web-dev-qa-db-fra.com

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é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?

90
Mubashar Ahmed Hassan

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);

132
Tharindu Kumara

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.

31
Rebirth

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');
?> 
10
IanMcL

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');
?> 
7
Krish R

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à ^^).

5
jCastellote

En effet, vous utilisez PHP 5.5 ou votre serveur Web aurait été mis à niveau vers 5.5.0.

Les fonctions mysql_* sont obsolètes à partir de 5.5.0

enter image description here

Source

3
Shankar Damodaran

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

1
Simone Nigro

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

0
Karima Rafes

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

http://www.php.net/manual/en/book.pdo.php

0
user1652319

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?

0
MSadura
<?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.

0
zubair1024

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.

0
Manoj Sharma

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);
0
Al3abMizo Games