Function fetch()

Résolu/Fermé
Drixo Messages postés 17 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013 - 15 sept. 2013 à 18:35
Drixo Messages postés 17 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013 - 20 sept. 2013 à 17:24
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 ?

9 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
16 sept. 2013 à 14:30
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
16 sept. 2013 à 17:07
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
16 sept. 2013 à 17:35
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
16 sept. 2013 à 18:17
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 sept. 2013 à 09:57
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
17 sept. 2013 à 18:57
Comment dois-je faire et ou ? Merci de m'aider
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 sept. 2013 à 21:00
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
18 sept. 2013 à 13:57
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 18/09/2013 à 14:06
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
18 sept. 2013 à 18:22
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
19 sept. 2013 à 11:32
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
19 sept. 2013 à 11:53
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
19 sept. 2013 à 19:12
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
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 samedi 13 août 2011 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 17:24
Comment dois je faire pour crée cette colonne a partir du php m'y admin ?
0