【问题标题】:Php script to continue if mysql fails如果 mysql 失败,PHP 脚本将继续
【发布时间】:2010-11-22 11:10:57
【问题描述】:

我有我正在开发的应用程序的代码:

    <?php
header("Content-type: text/xml");
//Gather data and prepare query
$thequery = urlencode($_GET['s']);
$yhost = 'http://boss.yahooapis.com';
$apikey = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$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);
$data = str_replace( array('<abstract>', '</abstract>'), array('<description>', '</description>'), $data);
$results = new SimpleXmlElement($data, LIBXML_NOCDATA);
//echo the results
echo $results->asXML();
?>

我在哪里有这一行:$thequery = urlencode($_GET['s']); 我想将它记录到数据库中,但显然输出 XML 非常重要,所以我如何确定,如果 mysql 位由于某种原因失败,XML仍然被输出?还是我过于复杂了?

【问题讨论】:

    标签: php mysql xml get


    【解决方案1】:

    使用ob_start() 确保在执行数据库操作时没有输出返回到浏览器/客户端

    【讨论】:

      【解决方案2】:

      这很容易解决,只需在你的mysql命令前加上@(或将错误显示设置为关闭)并检查返回码:

      $ret = @mysql_query($query);
      if(!$ret) {
          do error handling;
      } else {
          continue with something else;
      }
      

      【讨论】:

      • 感谢...不过,mysql 错误将得到处理,更重要的是输出 xml 而不是解决 mysql 错误...
      • 问题出在哪里?只需执行if($ret != false) {output your mysql things},如果出现Mysql 错误,if 子句将不会被执行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      相关资源
      最近更新 更多