Call to a member function query() on null

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 30 nov. 2021 à 10:14
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 30 nov. 2021 à 10:18
Bonjour à tous,

(Je poste ma question ici, mais je ne suis pas sûr que cela soit le bon endroit)

Ma webapplication fonctionne bien en local (site +bdd). Comme j'avais fait de
nombreuses modifications dans mes tables locales, j'ai décidé ce matin d'effacer
les tables qui étaient en ligne chez IONOS pour transférer les nouvelles avec leur
contenu...

Depuis j'ai un affichage de mon site en ligne extrêêêêmement long, voir des
plantages avec ce message :

La base de donnée n'est pas accessible, merci d'essayer plus tard
Fatal error: Uncaught Error: Call to a member function query() on null in /homepages/28/d184929988/htdocs/gestion/index.php:13 Stack trace: #0 {main} thrown in /homepages/28/d184929988/htdocs/gestion/index.php on line 13


Voici mon code pour afficher l'index.php :

<?php
//Gestion du cache du navigateur-->
header("Cache-Control: no-cache, must-revalidate");

// ************** FORMULAIRE DE CONNEXION *******************
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion2']) && $_POST['connexion2'] == 'Connexion') {
    if ((isset($_POST['login2']) && !empty($_POST['login2'])) && (isset($_POST['pass2']) && !empty($_POST['pass2']))) {
        require('connexion.php');
        // on teste si une entrée de la base contient ce couple login / pass
        //$sql2 = 'SELECT count(*) FROM membres WHERE login="'.mysql_escape_string($_POST['login2']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass2'])).'"';
        $sql2 = 'SELECT count(*) FROM acces WHERE login="'.$_POST['login2'].'" AND pass="'.(md5($_POST['pass2'])).'"';
        $req2 = $bdd->query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
        $data2 = $req2 ->fetch();
        $req2->closeCursor();
        // si on obtient une réponse, alors l'utilisateur est un membre
        if ($data2[0] == 1) {
            session_start();
            $_SESSION['derniereaction2'] = time();
            $_SESSION['login2'] = $_POST['login2'];
            header('Location: accueil.php');
            exit();
        }
        // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
        elseif ($data2[0] == 0) {
            $erreur2 = 'Compte inconnu.';
        }
        // sinon, alors la, il y a un gros problème :)
        else {
            $erreur2 = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
        }
    }
    else {
		$erreur2 = 'Vous n\'avez pas rempli tous les champs';
	}
}
?>


connexion.php
<?php
// Connexion à la base de données :
try {
	$bdd = new PDO ('mysql:host=nom_structure;dbname=nom_base;charset=utf8','user', 'password', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));	
}

catch(PDOException $e) {
	echo 'La base de donnees n\'est pas accessible, veuillez reessayer plus tard !';
}

?> 


J'ai depuis viré mon phpmyadmin local pour ré installer la même version que chez IONOS, à savoir la 4.9.7.
En local, tout fonctionne bien !

J'ai un doute sur des lignes transférées dans mon export SQL , notamment les premières :

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;





Auriez vous une idée de l'origine de mon problème ?
Merci d'avance pour votre aide !

1 réponse

emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié le 30 nov. 2021 à 11:03
J'ai regardé ici :
https://forums.commentcamarche.net/forum/affich-33308714-call-to-a-member-function-query-on-null-in#answers

Mais ça ne solutionne pas mon problème !

EDIT : Si je vire mon fichier connexion.php du serveur mon site fonctionne parfaitement
(à part les pages qui tentent de se connecter à la bdd évidement)

EDIT 2 : 11h00 tout semble fonctionner à nouveau ! Problème chez IONOS ? Si oui, pourquoi
ce message d'erreur ?
0