Connexion bdd /mysqli erreur

Fermé
DJ2809 Messages postés 5 Date d'inscription lundi 25 avril 2022 Statut Membre Dernière intervention 22 août 2022 - 26 avril 2022 à 00:04
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 - 26 avril 2022 à 12:21
Bonjour à tous,
Je vous sollicite pour un problème de connexion à ma BDD. J'ai une base de donnée nommée db_test contenant une table :users (id, user_name, password, name)
La connexion s'établi sans problème mais j'ai un message d'erreur et par conséquent je n'arrive pas à accéder formulaire d'accueil. Je précise que je débute en php/mysql
l'erreur que j'ai obtenu :
Connexion au serveur MySQL établie avec succès.
Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, null given in /homepages/0/d908709233/htdocs/login.php:27 Stack trace: #0 /homepages/0/d908709233/htdocs/login.php(27): mysqli_query(NULL, 'SELECT * FROM u...') #1 {main} thrown in /homepages/0/d908709233/htdocs/login.php on line 27


Voici le code des deux fichiers:
<<?php
$sname = 'db50088742124.hosting-data.io';
$db_name = 'dbs4471255128';
$uname = 'dbu774415';
$password = 'ChaCHA554';

$link = new mysqli($sname, $uname, $password, $db_name);

if ($link->connect_error) {
die('<p>La connexion au serveur MySQL a échoué: '. $link->connect_error .'</p>');
} else {
echo '<p>Connexion au serveur MySQL établie avec succès.</p>';
}
?>


le 2ème fichier:

<?php 

session_start();
include "db_conn.php";

if (isset($_POST['uname']) && isset($_POST['password'])) {

function validate($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

$uname = validate($_POST['uname']);
$pass = validate($_POST['password']);

if (empty($uname)) {
header("Location: passw.php?error=User Name is required");
exit();
}else if(empty($pass)){
header("Location: passw.php?error=Password is required");
exit();
}else{
$sql = "SELECT * FROM users WHERE user_name='$uname' AND password='$pass'";

$link = mysqli_query($conn, $sql);

if (mysqli_num_rows($link) === 1) {
$row = mysqli_fetch_assoc($link);
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php");
exit();
}else{
header("Location: passw.php?error=Incorect User name or password");
exit();
}
}else{
header("Location: passw.php?error=Incorect User name or password");
exit();
}
}

}else{
header("Location: passw.php");
exit();
}



Je vous en serais vraiment très reconnaissant de ce que vous me proposerez

Bonne soirée
DE
A voir également:

4 réponses

jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
26 avril 2022 à 00:25
Bonjour,

La variable que tu as utilisé pour la connexion à la bdd se nomme : $link
  $link = new mysqli($sname, $uname, $password, $db_name);


Hors, dans ton code, tu fais un truc bizarre ..
Déjà, tu utilises une variable nommée $con .. et en plus tu écrases ta variable $link
$link = mysqli_query($conn, $sql);


A corriger donc par
$query = mysqli_query($link , $sql);

if (mysqli_num_rows($query ) === 1) {
			$row = mysqli_fetch_assoc($query );

0
DJ2809 Messages postés 5 Date d'inscription lundi 25 avril 2022 Statut Membre Dernière intervention 22 août 2022
26 avril 2022 à 00:36
Merci Jordan. Cela fonctionne (Connexion au serveur MySQL établie avec succès) . J'ai besoin de basculer sur la page acc.php en récupérant le bon mot de passe de la base de donnée
Merci encore
DE
0
DJ2809 Messages postés 5 Date d'inscription lundi 25 avril 2022 Statut Membre Dernière intervention 22 août 2022
26 avril 2022 à 10:35
Re bonjour,
En corrigeant mon code ci-dessous, j'ai une page blanche avec connexion établi avec succés mais rien ne s'affiche et en tapant n'importe quel mot de pass
Serait-il une histoire aussi de chemin relatif/absolu ?

ma page à atteindre est acc.php

if (mysqli_num_rows($link) === 1) {
$row = mysqli_fetch_assoc($link);
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php"


Merci de votre
Bonne journée
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
26 avril 2022 à 10:56
Tu n'as pas repris le code que je t'ai donné dans ma réponse précédente ..
0
DJ2809 Messages postés 5 Date d'inscription lundi 25 avril 2022 Statut Membre Dernière intervention 22 août 2022
26 avril 2022 à 10:58
si si j'ai mis ça :

$sql = "SELECT * FROM users WHERE user_name='$uname' AND password='$pass'";

$query = mysqli_query($link , $sql);

if (mysqli_num_rows($query ) === 1) {
$row = mysqli_fetch_assoc($query );
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php");
exit();
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
26 avril 2022 à 12:21
Primo .. merci d'utiliser les balises de code pour poster ton code sur le forum...

Deuxio ..
si si j'ai mis ça

Alors que tu avais collé le code :
ma page à atteindre est acc.php

if (mysqli_num_rows($link) === 1) {
$row = mysqli_fetch_assoc($link);
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php"

Et après tu me dis que tu avais bien écrit le code ??

Et tertio .. si il ne se passe rien.. c'est sûrement que tu ne rentres jamais dans tes IF ..
Ajoutes donc des ELSE ( avec des echo de tes variables dedans) pour voir ce qu'il en est;
Je précise au passage qu'on ne stocke jamais le mot de passe en clair dans une bdd .. il te faut donc le hasher.
0