Verouderd: mysql_connect()

Ik krijg deze waarschuwing, maar het programma werkt nog steeds correct.

De MySQL-code toont me een bericht in PHP:

Verouderd: mysql_connect(): De mysql-extensie is verouderd en
zal in de toekomst worden verwijderd: gebruik in plaats daarvan mysqli of PDO in
C:\xampp\htdocs\task\media\new\connect.inc.php op regel 2

Mijn connect.inc.phppagina is

<?php
  $connect = mysql_connect('localhost','root','');
  mysql_select_db('dbname');
?>

Wat betekent dit en hoe kan ik het bericht verwijderen?


Antwoord 1, autoriteit 100%

Er zijn een paar oplossingen voor uw probleem.

De manier met MySQLi zou als volgt zijn:

<?php
$connection = mysqli_connect('localhost', 'username', 'password', 'database');

Het uitvoeren van databasequery’s is ook eenvoudig en bijna identiek aan de oude manier:

<?php
// Old way
mysql_query('CREATE TEMPORARY TABLE `table`', $connection);
// New way
mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');

Schakel alle verouderde waarschuwingen uit, inclusief deze van mysql_*:

<?php
error_reporting(E_ALL ^ E_DEPRECATED);

Het Exact-bestand en de regellocatie die moeten worden vervangen is “/System/Startup.php > line: 2” error_reporting(E_All); vervangen door error_reporting(E_ALL ^ E_DEPRECATED);


Antwoord 2, autoriteit 24%

Je kunt de waarschuwing verwijderen door een ‘@’ toe te voegen voor de mysql_connect.

@mysql_connect('localhost','root','');

Maar zoals de waarschuwing u vertelt, gebruik Mysqli of PDO sinds de MySQL-extensie in de toekomst zal worden verwijderd.


3, Autoriteit 7%

Om het deprecatiebericht hier alleen voor te drukken (en blijf op de hoogte van andere afschrijvingen in uw code), kunt u de verbinding met @:

voorvoegen

<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?> 

4, Autoriteit 5%

Deze waarschuwing wordt weergegeven omdat een nieuwe extensie is verschenen.
Het suppous die je nog steeds de oude kunt gebruiken, maar in sommige gevallen is het onmogelijk.

Ik laat u zien hoe ik de verbinding met de database doe. U hoeft alleen de waarden van de variabelen te wijzigen.

Mijn verbindingsbestand: verbinding.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);
?>

De verlengingsveranderingen ook bij het uitvoeren van een query.

Query-bestand: “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");    
?>

Op deze manier gebruikt MySQL Verbeterde extensie , maar u kunt PDO (PHP-gegevensobjecten) gebruiken.

eerste methode kan alleen worden gebruikt met MySQL-databases, maar PDO kan verschillende soorten databases beheren.

Ik ga een voorbeeld plaatsen, maar het is noodzakelijk om te zeggen dat ik alleen de eerste gebruik, dus corrigeer me als er een fout is.

Mijn PDO-verbindingsbestand: “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);
?>

Querybestand (PDO): “example.php”

<?php
 $query = "Here the query you are going to perform";
 $result=$connection->$query;
?>

Om te eindigen zeg gewoon dat je de waarschuwing natuurlijk kunt verbergen, maar het is geen goed idee, want het kan je in de toekomst helpen tijd te besparen als er een fout optreedt (we kennen allemaal de theorie, maar als je veel uren werkt soms… hersenen zijn er niet ^^ ).


Antwoord 5, autoriteit 3%

Dat komt omdat je PHP 5.5 gebruikt, anders zou je webserver geüpgraded zijn naar 5.5.0.

De functies mysql_*zijn gedeprecieerd vanaf 5.5.0

Source


Antwoord 6

mysql_*, is officieel verouderdvanaf PHP v5.5.0 en zal in de toekomst worden verwijderd.

Gebruik de functie mysqli_*of pdo

Lees Oracle Converteren naar MySQLi


Antwoord 7

Het is slechts een waarschuwing die u vertelt om nieuwere methoden te gaan gebruiken om verbinding te maken met uw db, zoals pdo-objecten

http:/ /code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly–net-25338

De handleiding is hier

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


8

Waarschuwing “verouderd” in het algemeen betekent dat je probeert te gebruiken functie, die is verouderd. Het doeasnt betekenen thaqt uw code niet zal werken, maar je moet refactoring overwegen.

In uw geval functons mysql_ zijn gedeprecieerd. Als u meer wilt weten over die weten hier is goede uitleg al: Waarom niet moeten ‘t ik gebruik mysql_ * functies in PHP?


9

<?php 
$link = mysqli_connect('localhost','root',''); 
if (!$link) { 
    die('Could not connect to MySQL: ' . mysqli_error()); 
} 
echo 'Connection OK'; mysqli_close($link); 
?>

Dit zal uw probleem op te lossen.


10

BOB klasse vervangt deze methoden. Voorbeeld Mysql of 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
                ));

Bron: BOB klasse


11

Als u uw codering vervolgens

hebben gedaan

ini_set("error_reporting", E_ALL & ~E_DEPRECATED); 

is een goede optie, maar als je in het begin dan zeker moet u mysqli gebruiken.


12

Nou, ik kreeg vandaag net zo’n bericht te zien toen ik naar een nieuwe hosting ging! hoe dan ook, ik heb geprobeerd de “mySQL” te veranderen in “mySQLi”, maar het werkt niet, dus ik heb dit gedaan:

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

De truc is om foutrapportage uit te schakelen 🙂

# Turn off all error reporting
error_reporting(0);

Voor PHP 7+ kun je in plaats daarvan deze code gebruiken:

ini_set('display_errors', 0);
ini_set('log_errors', 1);

Bedankt


Antwoord 13

zet dit op je php-pagina.

ini_set("error_reporting", E_ALL & ~E_DEPRECATED); 

Antwoord 14

Het toevoegen van een @werkt voor mij!

Ik heb getest met error_reporting(E_ALL ^ E_DEPRECATED);

Other episodes