Function fetch()

Résolu
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours, voila j'ai fait l'acquisition d'un programme pour Twitter programmer en php.
Tout ce passe bien, sauf que sur l'index.php j'ai un message d'erreur :
Fatal error: Call to a member function fetch() on a non-object in /home/a9431994/public_html/index.php on line 33 ; de ce fait je n'arrive pas a faire marcher mon programme.
La ligne 33 de mon programme est celle-ci :

while ($donnees = $reponse->fetch())

Certain ami programmeur me dire que c'est une erreur de syntaxe, qu'il faut rajouter une boucle if, else.. et d'autre me dise que c'est un problème de la base de donné. Mais ce que je comprend pas, c'est qu'avant que j'en fasse l'acquisition il marchait très bien, ça peut être du a une mise a jour de l'api Twitter..
Savais vous comment je dois faire ?
A voir également:
  • Fetch fetchall
  • Fetch Art - Télécharger - Catalogage

9 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Un peu avant cette ligne tu doit avoir une instruction du genre :
$donnees = $bdd->query('requête sql');

La requête en question doit être fausse, plusieurs pistes :
- la connexion à la base de données fonctionne-t-elle ?
- le nom des champs et des tables de la base ont-ils été changé ?
- ...

Bonne journée
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Oui d'après moi la base de donner fonctionne.. Il y a juste le nom de la base de donner et les utilisateurs qui ont changer car j'ai changer de serveur
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Si le nom de la base a changé, vérifier alors la connexion de votre script PHP à cette base.
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai déjà modifier ces infos sur le fichier config.php .. sinon j'aurai eu un autre message d'erreur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Si la connexion à la base fonctionne, l'erreur doit surement venir de la requête sql. Essaye de copier la requête dans un client sql (phpmyadmin ou autre) pour voir si elle s'exécute.
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Comment dois-je faire et ou ? Merci de m'aider
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Voir mon premier message : cherche l'instruction suivante

$donnees = $bdd->query('requête sql');

et tu pourras vérifier ta requête.

Sans plus de code je ne pourrais pas te renseigner beaucoup plus.
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
voila l'ensemble de mon code merci de m'aider :

<?php

session_start();
?>
<!doctype html>

<html lang="fr">

<head>

<meta charset="utf-8">

<title>QuotBot</title>

<link rel="stylesheet" href="style.css">

<script src="script.js"></script>

</head>

<body>

Cette app supprime tous vos RTs sauf les RTs de vos mentions.
<a href="connexion.php">Ajoutez votre compte.</a> Seuls les comptes de + de 1000 followers sont acceptés.<br/>
<a href="sup.php">Suppression manuelle</a><br/>
Liste des comptes : <br />
<?php

require_once "config.php";

$reponse = $bdd->query('SELECT * FROM UndoRT ORDER BY lastcheck ASC');
$total = 0;
while ($donnees = $reponse->fetch())

{
$toa = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $donnees['token'], $donnees['token_secret']);
$content = $toa->get('account/verify_credentials');
if ($content->screen_name == '') {
echo $content->errors[0]->code . ' ' . $content->errors[0]->message . ' ' . $content->id . ' ';
if ($content->errors[0]->code == 89) $bdd->exec('DELETE FROM UndoRT WHERE id=' . $donnees['id']);
}
echo '<a href="https://twitter.com/ . $content->screen_name . '">@' . $content->screen_name . "</a> (" . number_format($content->followers_count, 0, '.', ' ') . ")<br />";
$total = $total + $content->followers_count;

}
echo "Total followers : " . number_format($total, 0, '.', ' ');
?>

</body>

</html>
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Peux tu également poster le contenu du fichier config.php en cachant le mot de passe biensur ?
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
voila

<?php
define('CONSUMER_KEY', 'NYqvYUPj1iuAKl1H0YkP');
define('CONSUMER_SECRET', 'maa1eMmGBzJqv8p2KTvb4UI2Z5KNLCi3I8Ndh6U');

require_once "twitteroauth.php";

try
{
$bdd = new PDO('mysql:host=localhost;dbname=uelhprxq_1', 'uelhprxq_1', '******');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Je ne sais pas si c'est nécessaire mais je te conseil également de cacher les valeurs de CONSUMER_KEY et CONSUMER_SECRET.
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Modifie le code de ton premier fichier comme ceci (à partir du require_once) :

require_once "config.php";

$reponse = $bdd->query('SELECT * FROM UndoRT ORDER BY lastcheck ASC');
if ($reponse === FALSE) {
var_dump($bdd->errorInfo());
exit();
}

// suite du code ...

Cela devrait t'afficher l'erreur sql nous permettant de résoudre ton problème.
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
maintenant le message d'erreur qui apparait est :
array(3) { [0]=> string(5) "42S22" [1]=> int(1054) [2]=> string(44) "Unknown column 'lastcheck' in 'order clause'" }
0
Pitet
 
Bravo, tu as trouvé d'où vient le problème.
Unknown column 'lastcheck' : la colonne lastcheck n'existe pas dans la table UndoRT.
0
Drixo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Comment dois je faire pour crée cette colonne a partir du php m'y admin ?
0