PHP mysql_query ignore complètement la première requête, en boucle?

  • RockmanTV
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Oct 12, 2004
  • Messages: 348
  • Status: Offline

Message Mai 22nd, 2009, 10:44 am

Je ne peux pas comprendre cela, et je ne peux croire que des theres un bug dans PHP pour cette fois. J'ai une boucle foreach qui boucle sur un flux xml (mon flux twitter) et affiche mes derniers tweets. J'ai décidé que je voulais ajouter à cette base de données mise en cache pour aider à l'exécution de bande passante. Je boucle à travers et il affiche les 5 tweets très bien, mais la fonction mysql_query est complètement ignorée sur la première boucle et ne fonctionne que cette dernière 4. Son car elle renvoie toujours false. Heres the code.
Code: [ Select ]
 
    foreach ($rss_xml->channel->item as $item){
        if($tweetsNum < 5){ //Read entire feed.
            $tweet = explode(": ", $item->title);
            $tweetmessage = preg_replace("/(http:\/\/[^\s]+)/", "<a href=\"\" rel=\"nofollow\"></a>", $tweet[1]);
            $tweetmessage = preg_replace("/(@[^\s]+)/", "<span class=\"tweet_at\"></span>", $tweetmessage);
            $tweetsARR[$tweetsNum] = "$tweetmessage";
            $query = "INSERT INTO rss_cache (rss_name, post, post_time) VALUES('Twitter', '$tweetsARR[$tweetsNum]', '$timenow')";
            echo "$query<br/>";
            mysql_query($query);
            $tweetsNum++;
        }else{
            break;
        }
    }
 
  1.  
  2.     foreach ($rss_xml->channel->item as $item){
  3.         if($tweetsNum < 5){ //Read entire feed.
  4.             $tweet = explode(": ", $item->title);
  5.             $tweetmessage = preg_replace("/(http:\/\/[^\s]+)/", "<a href=\"\" rel=\"nofollow\"></a>", $tweet[1]);
  6.             $tweetmessage = preg_replace("/(@[^\s]+)/", "<span class=\"tweet_at\"></span>", $tweetmessage);
  7.             $tweetsARR[$tweetsNum] = "$tweetmessage";
  8.             $query = "INSERT INTO rss_cache (rss_name, post, post_time) VALUES('Twitter', '$tweetsARR[$tweetsNum]', '$timenow')";
  9.             echo "$query<br/>";
  10.             mysql_query($query);
  11.             $tweetsNum++;
  12.         }else{
  13.             break;
  14.         }
  15.     }
  16.  


Lorsque je fais écho à la chaîne de requête cela fonctionne bien, il n'y a pas d'erreurs. PHP refuse suffit d'insérer quoi que ce soit dans la base de données sur la première itération de retour toujours faux. Aide à personne!? :cry:
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 22nd, 2009, 10:44 am

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Nov 18, 2007
  • Messages: 429
  • Status: Offline

Message Mai 22nd, 2009, 11:37 am

en fonction de ce que votre $ tweetsNum est initialisé à mai seulement vous recevoir 4 tweets à partir de votre xml. :-)

Essayez ($ tweetsNum <= 5) ou ($ tweetsNum <6).
  • RockmanTV
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Oct 12, 2004
  • Messages: 348
  • Status: Offline

Message Mai 22nd, 2009, 12:16 pm

Non, ce n'est pas la question. En écho à la requête avant de me lancer réellement sur la mysql_query il pour vérifier que tout problème. Il écrit les cinq fois et tous les theyre correct. Le problème, c'est que la première fois que je mysql_query il retourne faux, alors que toutes les autres fois il retourne vrai. Par exemple, si j'ai couru la boucle 10 fois, la première itération, il échoue, puis 9 autres, il travaille toujours.

Pour une raison mysql_query est TOUJOURS retourner faux la première itération, simple, qui n'a pas de sens. Je sais que la chaîne de requête est valable car il fait écho Im avant qu'il s'exécute.
  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Nov 18, 2007
  • Messages: 429
  • Status: Offline

Message Mai 23rd, 2009, 1:36 pm

Pouvez-vous l'écho des données qui doivent être stockées faire? Je suppose que lorsque vous êtes en écho à la requête, vous obtenez la valeur des champs qui doivent être entreposés de manière que vous avez probablement déjà remarqué de mauvaises valeurs de la première série de données.

Peut-être votre première itération contient certaines données non désirées de l'explosion (). La séparation des ":" laisser une certaine marge de mai mobile de données dans la première série de données que la table db n'aime pas. C'est un long shot, mais peut-être modifier la valeur de la colonne "post" dans votre base de données de varchar (225) NULL, et essayez d'utiliser trim () sur la valeur stockée thats faire pour supprimer les espaces.

Du code affiché la dernière chose que je ne peux penser à est peut-être essayer de le stocker $ query dans un tableau et peut-être par le biais de la boucle, il s'assure que les mysql_query () est appelé à faire de chaque requête.
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Mai 24th, 2009, 10:34 pm

Que faire si vous l'écho de la première requête? (Thats si c'est toujours le même).
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • RockmanTV
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Oct 12, 2004
  • Messages: 348
  • Status: Offline

Message Mai 27th, 2009, 8:55 am

Devilwood vous avez eu raison de votre dernier poste. Je travaille à travers lui, et a décidé d'insérer quelques postes mannequin. J'ai remarqué que ce n'était pas seulement le premier poste qui n'a pas été inséré plus. Par hasard, lors de mon essai, chaque fois que je me suis rendu à ma demande de test de la première a toujours un message dans ce qui a provoqué la requête à l'échec (mais pas de me donner aucun avertissement) causant me croire qu'il y avait quelque chose de spécial à propos de la première requête.

C'était juste une coïncidence malheureuse :P . Un simple jeu de fonction addslashes tout de nouveau à droite. Je déteste quand l'évidence de sa solution simple lol.
  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Nov 18, 2007
  • Messages: 429
  • Status: Offline

Message Mai 27th, 2009, 10:46 pm

Je devrais avoir ramassé sur lui rapidement. Thats m'est arrivé de tonnes. Surtout quand j'ai été la séparation de certaines chaînes de délimiteur de texte clair des fichiers pour stocker segments de phrase dans une base de données. Il semble mon réductions obtenir la plupart des données propres, mais il est généralement la première coupe qui avait une erreur, comme un espace supplémentaire ou comme dans votre cas, un. Glad you got it fonctionné. Se sent bien d'aller de l'avant après avoir quelque chose de si aggravantes. Au moins la correction a été rapide.

Afficher de l'information

  • Total des messages de ce sujet: 7 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 190 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC