2010-12-03 93 views
1

嘿,我剛做了一個iPhone應用程序,我讓用戶輸入一個搜索詞。然後,我將這個搜索詞彙發送到我的虛擬主機上的一個PHP頁面,然後我查詢一些RSS提要並將xml返回到應用程序。我很有趣的做法是將用戶搜索詞記錄到數據庫中,然後像平常一樣返回XML。顯然更重要的是用戶得到的是XML而不是記錄的術語。那麼,我可以添加到下面的代碼,以確保XML安全地返回,而不管mysql是否失敗?PHP安全地登錄到mysql,但如果失敗則繼續腳本

任何想法?

<?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(); 
?> 

回答

1

你應該使用標準DB語法,如罰款:

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

// output your XML 

這是什麼會做的是試圖連接到您的數據庫和運行您的插入(記錄)查詢。無論失敗如何,XML都將被輸出。

+0

謝謝,剛剛實現了這一點,我的應用程序仍然有效。救濟 – benhowdle89 2010-12-03 10:32:50

+0

很高興幫助:) – SW4 2010-12-03 11:35:47

1

聽起來像我之前已經回答重複的問題,

嘗試輸出緩衝

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

細節:http://www.php.net/manual/en/ref.outcontrol.php

然而,用於記錄用戶搜索,做一個解析在Apache日誌更容易(僅限GET),
以及使用較少資源優化頁面優化的好處

已更新 ...同樣的問題從你... Php script to continue if mysql fails