2010-12-03 15 views
1

Hey, je viens de faire une application iPhone et que je reçois l'utilisateur d'entrer un terme de recherche. Je prends alors ce terme de recherche et l'envoie à une page de PHP sur mon hébergeur, j'interroge alors quelques fils RSS et renvoie le xml à l'application. Ce que je suis intéressant à faire est de consigner le terme de recherche des utilisateurs dans une base de données, puis renvoyer le XML comme d'habitude. Ce qui est évidemment le plus important, c'est que l'utilisateur obtienne le xml plutôt que le terme en cours de journalisation. Alors qu'est-ce que je pourrais ajouter au code ci-dessous pour m'assurer que le XML est renvoyé en toute sécurité indépendamment du fait que le mysql échoue?PHP en toute sécurité la connexion à MySQL, mais continuer script si échouent

Des idées?

<?php 
header("Content-type: text/xml"); 
//Gather data and prepare query 
$thequery = urlencode($_GET['s']); 
$yhost = 'http://boss.yahooapis.com'; 
$apikey = 'xxxxxxxxxxxxxxxxxxxxxxx'; 
$url = $yhost.'/ysearch/news/v1/'.$thequery.'?appid='.$apikey.'&format=xml'; 
//Get the results 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$data = curl_exec($ch); 
curl_close($ch); 
$results = new SimpleXmlElement($data, LIBXML_NOCDATA); 
//echo the results 
echo $results->asXML(); 
?> 

Répondre

1

Vous devriez être fine en utilisant la syntaxe standard DB, par exemple:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if ($link) { 
    // do your DB operations 
    mysql_close($link); 
} 

// output your XML 

Ce que cela va faire est de tenter de se connecter à votre base de données et exécuter votre insert (journalisation) requête. Indépendamment de l'échec, le XML sera ensuite sorti.

+0

Merci, vient de mettre en œuvre cela et mon application fonctionne toujours. Soulagement – benhowdle89

+0

Heureux d'aider :) – SW4

1

sonne comme une question répétée j'avais répondu avant,

essayer

ob_start(); 
    /* code for database insertion */ 
ob_end_flush(); // ob_end_clean, ob_get_contents... 

détails sur mise en mémoire tampon de sortie: http://www.php.net/manual/en/ref.outcontrol.php

Cependant, pour la recherche de l'utilisateur de l'enregistrement, faire une analyse syntaxique sur log apache est beaucoup plus facile (GET seulement),
et avantages pour une meilleure optimisation de la page en terme de moins de ressources utilisées

mis à jour ... même question de votre part ... Php script to continue if mysql fails

+0

Ouais, vous avez raison désolé pour le doublon! – benhowdle89

+0

@ benhowdle89 - pas de souci, si la journalisation n'est pas critique, je suggère d'utiliser un cron pour analyser le journal apache quotidien et mettre à jour dans la base de données – ajreal

+0

ouais pourrait être mieux en fait! Puis-je accéder à ces journaux si je suis avec un hébergeur? Vont-ils me laisser voir cela ... – benhowdle89