web-dev-qa-db-fra.com

Erreur fatale: Erreur non capturée: appel de la fonction non définie mysql_connect ()

J'essaie de faire une simple connexion avec XAMPP et le serveur MySQL, mais chaque fois que j'essaye de saisir des données ou de me connecter à la base de données, j'obtiens cette erreur.

Erreur fatale: Erreur non récupérée: appel de la fonction non définie mysql_connect () dans C:\xampp\htdocs\register.php: 22
Trace de pile: # 0 {main} renvoyée dans C:\xampp\htdocs\register.php à la ligne 22

Exemple de ligne 22:

$link = mysql_connect($mysql_hostname , $mysql_username);
62
Demeteor

Les fonctions mysql_* ont été supprimées dans PHP 7.

Vous avez probablement PHP 7 dans XAMPP. Vous avez maintenant deux alternatives: MySQLi et PDO .

De plus, ici est une page wiki intéressante sur PDO.

103
efik

Vous pouvez utiliser mysqli_connect($mysql_hostname , $mysql_username) au lieu de mysql_connect($mysql_hostname , $mysql_username).

Les fonctions mysql_* ont été supprimées à partir de PHP 7. Vous avez maintenant deux possibilités: MySQLi et PDO .

34
user6128099

Il est recommandé d'utiliser les extensions MySQLi ou PDO. Il n'est pas recommandé d'utiliser l'ancienne extension mysql pour les nouveaux développements, car elle était obsolète dans PHP 5.5.0 et supprimée dans PHP 7. .

PHP propose trois API différentes pour se connecter à MySQL. Ci-dessous, nous montrons les API fournies par les extensions mysql, mysqli et PDO. Chaque extrait de code crée une connexion à un serveur MySQL s'exécutant sur "exemple.com" en utilisant le nom d'utilisateur "username" et le mot de passe "password". Et une requête est lancée pour saluer l'utilisateur.

Exemple # 1 Comparaison des trois API MySQL

<?php
// mysqli
$mysqli = new mysqli("example.com", "username", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:Host=example.com;dbname=database', 'username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("example.com", "username", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

Je vous suggère d'essayer à la fois MySQLi et PDO et de découvrir quelle conception d'API vous préférez.

Lire Choix d'une API et Pourquoi ne devrais-je pas utiliser les fonctions mysql_ * en PHP?

20
Abhijit Jagtap

Comme d'autres réponses le suggèrent ... Un type (pour quelque raison que ce soit) a décidé que votre ancien code ne devrait pas fonctionner lorsque vous mettez à jour votre PHP, car il sait mieux que vous et ne se soucie pas de ce que fait votre code ou de sa simplicité. vous mettre à niveau.

Eh bien, si vous ne pouvez pas mettre à jour votre projet du jour au lendemain, vous pouvez

rétrograder votre version de PHP à la version qui a fonctionné

ou...

utilisez un shim (genre de polyfill) tel que https://github.com/dshafik/php7-mysql-shim ou https://github.com/dotpointer/mysql-shim , puis trouvez une place pour include_once("choice_shim.php"); quelque part dans votre code

Cela gardera votre ancien code PHP opérationnel jusqu'à ce que vous ayez envie de mettre à jour ...

7
konzo

Les fonctions mysql_* ont été supprimées dans PHP 7.

Vous avez maintenant deux alternatives: MySQLi et PDO .

Voici une comparaison avant (-) et après (+) de certaines modifications courantes apportées à MySQLi, prises directement dans du code fonctionnel:

-if (!$dbLink = mysql_connect($dbHost, $dbUser, $dbPass))
+if (!$dbLink = mysqli_connect($dbHost, $dbUser, $dbPass))

-if (!mysql_select_db($dbName, $dbLink))
+if (!mysqli_select_db($dbLink, $dbName))

-if (!$result = mysql_query($query, $dbLink)) {
+if (!$result = mysqli_query($dbLink, $query)) {

-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {

-mysql_close($dbLink);
+mysqli_close($dbLink);
7
user664833

Les fonctions mysql_ ont été supprimées de PHP 7. Vous pouvez maintenant utiliser MySQLi ou PDO .

Exemple MySQLi:

mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);

mysqli_connect lien de référence

2
Dhaval Ajani

Assurez-vous que vous n'avez pas commis de faute de frappe comme dans mon cas

msyql_fetch_assoc devrait être mysql

1
Hammad Khan

Vous avez cette erreur parce que la fonction mysql_connect (en fait, toutes les fonctions mysql_*) ont été supprimées de PHP 7. Vous pouvez maintenant utiliser MySQLi ou - PDO .

Exemple:

$mysqli = new mysqli($hostname, $username, $password, $database);
1
rashedcs