PHP mysql connexion
Ginolattera
Messages postés
26
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'ai un problème sur mon script, mon serveur indique une erreur sur la ligne:
$produit = $result->fetch_assoc();
l'erreur est: Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wampserver32\www\sale\ajout_panier.php on line 7
je n'arrive pas trouver la cause,
qq'un peut m'aider ? SVP
<?php
session_start();
$mysql = new mysqli('localhost', 'root', '', 'testebase');
$result = $mysql->query('SELECT * FROM trybase WHERE name= '.$_POST['name']);
$produit = $result->fetch_assoc();
require_once 'panier.php';
$valeur = array(
'name'=>$produit['name'],
'price'=>$produit['price'],
'quantity'=>$_POST['quantity']
);
$panier->set($_POST['name'], $valeur);
header('location: votre_panier.php');
?>
j'ai un problème sur mon script, mon serveur indique une erreur sur la ligne:
$produit = $result->fetch_assoc();
l'erreur est: Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wampserver32\www\sale\ajout_panier.php on line 7
je n'arrive pas trouver la cause,
qq'un peut m'aider ? SVP
<?php
session_start();
$mysql = new mysqli('localhost', 'root', '', 'testebase');
$result = $mysql->query('SELECT * FROM trybase WHERE name= '.$_POST['name']);
$produit = $result->fetch_assoc();
require_once 'panier.php';
$valeur = array(
'name'=>$produit['name'],
'price'=>$produit['price'],
'quantity'=>$_POST['quantity']
);
$panier->set($_POST['name'], $valeur);
header('location: votre_panier.php');
?>
A voir également:
- PHP mysql connexion
- Gmail connexion - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Mysql community server - Télécharger - Bases de données
14 réponses
Bonsoir,
un grand classique ^^
https://openclassrooms.com/forum/sujet/fatal-error-call-to-a-member-function-fetch-74180
Cordialement
ps -> si ton fichier panier.php envoie quoi que ce soit en sortie, HEADER(location ... ne fonctionnera pas. une redirection pareille bouhuoouuuuuu c'est pas beau !
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
un grand classique ^^
https://openclassrooms.com/forum/sujet/fatal-error-call-to-a-member-function-fetch-74180
Cordialement
ps -> si ton fichier panier.php envoie quoi que ce soit en sortie, HEADER(location ... ne fonctionnera pas. une redirection pareille bouhuoouuuuuu c'est pas beau !
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
Bonjour
Ça marchera peut-être un peu mieux en mettant des quotes autour du nom :
Ça marchera peut-être un peu mieux en mettant des quotes autour du nom :
$result = $mysql->query('SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"');
@ le père
j'ai ait ce que vous dites, mais erreur affiche:
Parse error: syntax error, unexpected '=' in C:\wampserver32\www\sale\ajout_panier.php on line 7
mais je ne pense pas que je peux enlever '=', c'est aucun sens
j'ai ait ce que vous dites, mais erreur affiche:
Parse error: syntax error, unexpected '=' in C:\wampserver32\www\sale\ajout_panier.php on line 7
mais je ne pense pas que je peux enlever '=', c'est aucun sens
@ ludobabs
avec ta méthode:
$requete = 'SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"';
echo $requete;
die('faux');
le serveur indique: SELECT * FROM trybase WHERE name= "Peter"faux
donc, il a l'air que cette ligne est correct,
mais quand je fais:
$result = 'SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"';
$produit = $result->fetch_assoc();
echo $produit;
die('faux');
l'erreur est: Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wampserver32\www\sale\ajout_panier.php on line 8
donc, c'est cette ligne qui est faux: $produit = $result->fetch_assoc();
avec ta méthode:
$requete = 'SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"';
echo $requete;
die('faux');
le serveur indique: SELECT * FROM trybase WHERE name= "Peter"faux
donc, il a l'air que cette ligne est correct,
mais quand je fais:
$result = 'SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"';
$produit = $result->fetch_assoc();
echo $produit;
die('faux');
l'erreur est: Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wampserver32\www\sale\ajout_panier.php on line 8
donc, c'est cette ligne qui est faux: $produit = $result->fetch_assoc();
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
1 - N'utilise pas LIKE à la place de =, LIKE et = ont des rôles différents.
2 - ton "unexpected '='" est bizarre, il n'avait pas lieu d'être. D'autant plus qu'il a disparu dans tes interventions suivantes. Tu avais mal recopié, ou il y avait un caractère invisible (par exemple espace insécable).
3 - dans ton dernier message, où tu as repris la requête que j'avais donnée et qui causait l'erreur unexpected = , il est normal que tu aies l'erreur "Call to a member function fetch_assoc() on a non-object" : tu n'as pas exécuté la requête ! Il te manque le mysql->query.
4 - donc, c'est cette ligne qui est faux: $produit = $result->fetch_assoc(); Absolument pas, grosse erreur de raisonnement. php détecte une anomalie ici, ça veut dire qu'il y a un problème ici OU AVANT. Dans ton cas, c'est très probablement avant. C'est probablement à l'exécution de la requête.
essaye
2 - ton "unexpected '='" est bizarre, il n'avait pas lieu d'être. D'autant plus qu'il a disparu dans tes interventions suivantes. Tu avais mal recopié, ou il y avait un caractère invisible (par exemple espace insécable).
3 - dans ton dernier message, où tu as repris la requête que j'avais donnée et qui causait l'erreur unexpected = , il est normal que tu aies l'erreur "Call to a member function fetch_assoc() on a non-object" : tu n'as pas exécuté la requête ! Il te manque le mysql->query.
4 - donc, c'est cette ligne qui est faux: $produit = $result->fetch_assoc(); Absolument pas, grosse erreur de raisonnement. php détecte une anomalie ici, ça veut dire qu'il y a un problème ici OU AVANT. Dans ton cas, c'est très probablement avant. C'est probablement à l'exécution de la requête.
essaye
$result = $mysql->query('SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"') or die ($mysql->error);
ou alors ...
de tête, à vérifier
cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
$pdo = new PDO('mysql:host=localhost;dbname=nom_de_ma_base','root','');
$this->connexion_bd = $pdo;
$this->data=$connexion_bd->query("SELECT code_article FROM articles WHERE bla bla bla");
$this->data_vue = $this->data->fetch();
echo $this->data_vue['code_article'];
de tête, à vérifier
cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
Tant qu'à le faire passer à PDO, il aurait mieux valu lui faire utiliser les requêtes préparées.
Et utiliser le try .. catch dont tu parlais plus haut pour capturer son erreur.
Ce que Ginolattera cherche à faire doit pouvoir marcher aussi bien avec mysqli qu'avec PDO, je ne vois aucune raison sérieuse de l'inciter à changer.
Et utiliser le try .. catch dont tu parlais plus haut pour capturer son erreur.
Ce que Ginolattera cherche à faire doit pouvoir marcher aussi bien avec mysqli qu'avec PDO, je ne vois aucune raison sérieuse de l'inciter à changer.
@le père
j'ai mis cette ligne comme tu dis
$result = $mysql->query('SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"') or die ($mysql->error);
ça donne erreur sur l'autre script:panier.php line 5 (public funtion _construct($nom){)
donc, il me semble ta ligne qui marche,
voici une partie de ce script panier.php:
<?php
class Panier{
public $nom;
private static $nbPanier = 0;
public funtion _construct($nom){
$this->nom = $nom;
}
public function set ($key, $value){
$_SESSION['paniers'][$this->nom][$key] = $value;
}
public function get($key){
if(isset($_SESSION['paniers'][$this->nom][$key]))
return $_SESSION['paniers'][$this->nom][$key];
return null;
}
public function delet($key){
if(isset($_SESSION['paniers'][$this->nom][$key]))
unset($_SESSION['paniers'][$this->nom][$key]);
}
j'ai mis cette ligne comme tu dis
$result = $mysql->query('SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"') or die ($mysql->error);
ça donne erreur sur l'autre script:panier.php line 5 (public funtion _construct($nom){)
donc, il me semble ta ligne qui marche,
voici une partie de ce script panier.php:
<?php
class Panier{
public $nom;
private static $nbPanier = 0;
public funtion _construct($nom){
$this->nom = $nom;
}
public function set ($key, $value){
$_SESSION['paniers'][$this->nom][$key] = $value;
}
public function get($key){
if(isset($_SESSION['paniers'][$this->nom][$key]))
return $_SESSION['paniers'][$this->nom][$key];
return null;
}
public function delet($key){
if(isset($_SESSION['paniers'][$this->nom][$key]))
unset($_SESSION['paniers'][$this->nom][$key]);
}
@ludobabs
je crois que l'idée de le père est bonne,
mtn, le problème se trouve sur l'autre script: panier.php
je crois que l'idée de le père est bonne,
mtn, le problème se trouve sur l'autre script: panier.php
j'ai ouyblié de mettre l'erreur de ligne:
syntax error, unexpected T_STRING, expecting T_VARIABLE in C:\wampserver32\www\sale\panier.php on line 5
syntax error, unexpected T_STRING, expecting T_VARIABLE in C:\wampserver32\www\sale\panier.php on line 5
...
public $nom;
private static $nbPanier = 0;
public function _construct($nom){
$this->nom = $nom;
...
$nom n'est pas typée à l'entrée du constructeur, l'erreur ne viendrait-elle pas de là ?
cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
1 - Où est-il question de type dans ta réponse ?
2 - Quelle différence entre
3 - si tu enlèves le paramètre $nom du contructeur, que sgnifie alors la ligne
4 - Quant à
2 - Quelle différence entre
public $nom;et
var $nom;à l'intérieur d'une classe ? D'après le manuel PHP 5, c'est la même chose
public $nom;étant la nouvelle syntaxe et
var $nom;étant toléré pour garder une certaine compatibilité avec les versions précédentes.
3 - si tu enlèves le paramètre $nom du contructeur, que sgnifie alors la ligne
$this->nom = $nom;? Que représente le $nom de droite ?
4 - Quant à
VAR public $nom;, c'est tout simplement une erreur de syntaxe.
vous m'excusez que sur le script: panier.php
c'est une erreur de frappe sur le mot function, je viens de le corriger,
ce script n'est plus en question, mtn, ça revient encore une fois sur le script aujout_panier.php,
que cette ligne ($panier->set($_POST['name'], $valeur);)a deux erreur:
Undefined variable: panier in C:\wampserver32\www\sale\ajout_panier.php on line 17
Call to a member function set() on a non-object in C:\wampserver32\www\sale\ajout_panier.php on line 17
je voudrais répéter ce script (ajout_panier.php), est ce que vous pouvez trouver les causes ?:
<?php
session_start();
$mysql = new mysqli('localhost', 'root', '', 'testebase');
$result = $mysql->query('SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"') or die ($mysql->error);
$produit = $result->fetch_assoc();
require_once 'panier.php';
$valeur = array(
'name'=>$produit['name'],
'price'=>$produit['price'],
'quantity'=>$_POST['quantity']
);
$panier->set($_POST['name'], $valeur);
header('location: votre_panier.php');
?>
c'est une erreur de frappe sur le mot function, je viens de le corriger,
ce script n'est plus en question, mtn, ça revient encore une fois sur le script aujout_panier.php,
que cette ligne ($panier->set($_POST['name'], $valeur);)a deux erreur:
Undefined variable: panier in C:\wampserver32\www\sale\ajout_panier.php on line 17
Call to a member function set() on a non-object in C:\wampserver32\www\sale\ajout_panier.php on line 17
je voudrais répéter ce script (ajout_panier.php), est ce que vous pouvez trouver les causes ?:
<?php
session_start();
$mysql = new mysqli('localhost', 'root', '', 'testebase');
$result = $mysql->query('SELECT * FROM trybase WHERE name= "'.$_POST['name'].'"') or die ($mysql->error);
$produit = $result->fetch_assoc();
require_once 'panier.php';
$valeur = array(
'name'=>$produit['name'],
'price'=>$produit['price'],
'quantity'=>$_POST['quantity']
);
$panier->set($_POST['name'], $valeur);
header('location: votre_panier.php');
?>