Notice: Trying to access array offset on value of type bool
tabibi
-
jordane45 Messages postés 40050 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 40050 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'essaye d'afficher des données de ma bdd en php mais j'ai ce message d'erreur "Notice: Trying to access array offset on value of type bool"
pourtant la requête est bonne (je l'ai tester dans ma bdd)
je n'arrive pas à comprendre d'où vient l'erreur.
Pouvez-vous m'aider je ne suis que novice en développement
voici le code
J'essaye d'afficher des données de ma bdd en php mais j'ai ce message d'erreur "Notice: Trying to access array offset on value of type bool"
pourtant la requête est bonne (je l'ai tester dans ma bdd)
je n'arrive pas à comprendre d'où vient l'erreur.
Pouvez-vous m'aider je ne suis que novice en développement
voici le code
<?php session_start();
header('Access-Control-Allow-Origin: *');
header('Content-Type: text/html; charset=utf-8');
require_once ('../Controller/dbController.php');
//$sql = "SELECT batiment, nomPorte FROM portes";
//$query = mysql_query($sql) or die (mysql_error());
$dbcontroller = new DBController();
$stmt = mysqli_prepare($dbcontroller->getConn(), "SELECT batiment, nomPorte FROM portes");
$data = $dbcontroller->executeQueryMSQL($stmt);
$dbcontroller->closeConnMSQL();
?>
<table width="50%" cellpadding="5" cellspace="5">
<tr>
<td>Batiments</td>
<td>Portes</td>
</tr>
<?php while ($data){ ?>
<tr>
<td><?php $data['batiment'] ?></td> (c'est ici que ça bloque)
<td><?php $data['batiment'] ?></td>
</tr>
<?php } ?>
</table>
EDIT : Ajout des balises de code !
Configuration: Windows / Chrome 100.0.4896.75
A voir également:
- Php trying to access array offset on value of type bool in
- Notice gratuite - Guide
- Notice chromecast - Guide
- Notice télécommande universelle grundig - Forum Téléviseurs
- Uleway g381 notice - Forum Mobile
- Homday x-pert écouteur bluetooth notice ✓ - Forum Casque et écouteurs
2 réponses
Bonjour,
Ton code semble étrange.
Tu as à la fois un controller (dont on ne sait rien..) et en même temps tu essaies de faire du "pur" mysqli ...
Et puis.. ton message d'erreur doit contenir le numéro de la ligne concernée...
il serait bien de nous la donner.
Bref, donnes nous le numéro de ligne et partages nous le code de ton controller.
NB: Pour poster ton code sur le forum, tu dois utiliser les balises de code.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ton code semble étrange.
Tu as à la fois un controller (dont on ne sait rien..) et en même temps tu essaies de faire du "pur" mysqli ...
Et puis.. ton message d'erreur doit contenir le numéro de la ligne concernée...
il serait bien de nous la donner.
Bref, donnes nous le numéro de ligne et partages nous le code de ton controller.
NB: Pour poster ton code sur le forum, tu dois utiliser les balises de code.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Bonjour,
Le code de ton controller est pas vraiment optimisé ...
A quoi ça sert de faire des fonctions qui servent à faire le exécute .. si à coté de ça tu fais tes prépares en dehors ...
et puis, faut éviter de mélanger du style procédurale et de l'orienté objet ..
En gros, modifie ton code comme ceci :
et pour l'utiliser
Le code de ton controller est pas vraiment optimisé ...
A quoi ça sert de faire des fonctions qui servent à faire le exécute .. si à coté de ça tu fais tes prépares en dehors ...
et puis, faut éviter de mélanger du style procédurale et de l'orienté objet ..
En gros, modifie ton code comme ceci :
class DBController {
private $conn;
private $stmt;
//Le constructeur renvoie une instance de la base de données qui sert à lancer les requêtes.
function __construct(){
$this->connectDBMSQL();
}
public function connectDBMSQL(){
require_once '../Connection/SqlConn.php';
$connection = new mysqli($hostMSQL, $loginMSQL, $passwordMSQL, $databaseMSQL);
/* Vérifie la connexion */
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$this->conn = $connection;
}
public function execute($sql) {
$this->stmt = $this->conn->prepare($this->conn, $sql);
$res = $this->stmt->execute();
if(!$res){
printf("Erreur : %s.\n", $stmt->error);
exit;
}
return $res;
}
public function close(){
/* Ferme la connexion */
$this->con->close();
}
}
et pour l'utiliser
$dbcontroller = new DBController();
$stmt = $dbcontroller->execute("SELECT batiment, nomPorte FROM portes");
$dbcontroller->close();
class DBController { private $conn; //Le constructeur renvoie une instance de la base de données qui sert à lancer les requêtes. function __construct(){ $connection = $this->connectDBMSQL(); if (!empty($connection)) { $this->conn = $connection; } else { echo("Connexion impossible à la base de données MYSQL"); } } function connectDBMSQL(){ include '../Connection/SqlConn.php'; $connection = mysqli_connect($hostMSQL, $loginMSQL, $passwordMSQL, $databaseMSQL); return $connection; } function getConn(){ return $this->conn; } function executeQueryMSQL($stmt) { return $stmt->execute(); } function executeSelectQueryMSQL($stmt) { $stmt->execute(); $meta = $stmt->result_metadata(); while ($field = $meta->fetch_field()) { $params[] = &$row[$field->name]; } call_user_func_array(array($stmt, 'bind_result'), $params); while ($stmt->fetch()) { foreach ($row as $key => $val) { $c[$key] = $val; } $resultset[] = $c; } $this->freeStatementMSQL($meta); if (!empty($resultset)) { return $resultset; } else { return null; } } function closeConnMSQL(){ mysqli_close($this->conn); } function freeStatementMSQL($query) { mysqli_free_result($query); } }ensuite ça indique que le problème se trouve ligne 26, 27
class DBController { private $conn; //Le constructeur renvoie une instance de la base de données qui sert à lancer les requêtes. function __construct(){ $connection = $this->connectDBMSQL(); if (!empty($connection)) { $this->conn = $connection; } else { echo("Connexion impossible à la base de données MYSQL"); } } function connectDBMSQL(){ include '../Connection/SqlConn.php'; $connection = mysqli_connect($hostMSQL, $loginMSQL, $passwordMSQL, $databaseMSQL); return $connection; } function getConn(){ return $this->conn; } function executeQueryMSQL($stmt) { return $stmt->execute(); } function executeSelectQueryMSQL($stmt) { $stmt->execute(); $meta = $stmt->result_metadata(); while ($field = $meta->fetch_field()) { $params[] = &$row[$field->name]; } call_user_func_array(array($stmt, 'bind_result'), $params); while ($stmt->fetch()) { foreach ($row as $key => $val) { $c[$key] = $val; } $resultset[] = $c; } $this->freeStatementMSQL($meta); if (!empty($resultset)) { return $resultset; } else { return null; } } function closeConnMSQL(){ mysqli_close($this->conn); } function freeStatementMSQL($query) { mysqli_free_result($query); } }cst le code du controller
et les lignes indiqué par l'erreur sont ligne ligne 26 et 27