【问题标题】:Grab results from mysql and apply each result to variable and finally output从 mysql 中获取结果并将每个结果应用于变量并最终输出
【发布时间】:2012-07-24 12:45:17
【问题描述】:

所以我想做的是: 运行这个查询:SELECT FW_ArtSrcLink FROM FW_ArtSrc WHERE OneSet =1 输出两个结果:

我想将这两个结果附加到$result var 并通过结果(为 2 - 如图所示)作为$r 进行交互,然后输出$r 的部分,从而成为

# Source of Article Info-->
            $SrcTitle=$newsStory[$i]->title;
            $SrcLink=$newsStory[$i]->link;

    # Actual News Article Info -->
            $title=$newsStory[$i]->title;
            $desc=$newsStory[$i]->description;

完整代码如下所示,目前仅从 sports.yahoo.com/tennis/rss.xml 的第二个结果中提取:

## Loop through results from mysql
try{
    #connection string
        // $dbconn = new PDO('mysql:host=localhost;port=3306;dbname=mydatabase',array(PDO::ATTR_PERSISTENT => true));
        $dbconn = new PDO('mysql:host=localhost;port=3306;dbname=mydatabase','myuser','mypass',array(PDO::ATTR_PERSISTENT => true));
        $q = $dbconn->prepare("SELECT FW_ArtSrcLink FROM FW_ArtSrc WHERE OneSet=1");
    #call stored proc
        $q->execute();
    #get the rows into an array
        $result = $q->fetchAll();
        $newsStory[] = array();
        foreach($result as $r){
            $xmlUrl = $r['FW_ArtSrcLink'];
            $ConvertToXml = simplexml_load_file($xmlUrl);
            # -> Setup XML
            $newsStory = $ConvertToXml->channel->item;
        }

    # -----> Load News Stories
        for($i = 0;$i<sizeof($newsStory); $i++){

    # Source of Article Info-->
            $SrcTitle=$newsStory[$i]->title;
            $SrcLink=$newsStory[$i]->link;

    # Actual News Article Info -->
            $title=$newsStory[$i]->title;
            $desc=$newsStory[$i]->description;

    # Output Results ------------>      
            echo '<hr>';
            echo '<strong>'.'Title:'.$title.'</strong>'.'(via: <a href=\''.$SrcLink.'\'>'.$SrcTitle.'</a>'.'<br />';
            //echo 'Link:'.$link.'<br />';
            echo 'Description'.$desc.'<br>';
            ##echo 'count '.count($result);
            echo '<hr>';
        }
} // try

我在这里做错了什么?

来自单个 db 结果的简单输出示例,我将其称为硬编码结果而不是动态使用

$xmlUrl ="http://edge1.catalog.video.msn.com/videoByTag.aspx?tag=Fox%20Sports_NBA%20news&ns=MSNVideo_Top_Cat&mk=us&sd=-1&sf=ActiveStartDate&vs=0&ind=&ps=&rct=&ff=88&responseEncoding=rss&title=FOX%20Sports%20Video%20on%20MSN:%20NBA&template=foxsports&p=foxsports";
$ConvertToXml = simplexml_load_file($xmlUrl);

【问题讨论】:

    标签: php mysql xml foreach


    【解决方案1】:

    尝试更改此代码块:

        $newsStory = array();
        foreach($result as $r){
            $xmlUrl = $r['FW_ArtSrcLink'];
            $ConvertToXml = simplexml_load_file($xmlUrl);
            # -> Setup XML
            $newsStory[] = $ConvertToXml->channel->item;
        }
    

    您之前的代码将 $newsStory 声明为数组数组。然后它会覆盖该定义并将 $newsStory 变成一个简单的字符串。
    它解释了您注意到的行为:“目前仅从第二个结果中提取”。

    而且由于您没有告诉我们任何 PHP 错误,您可能没有打开它们。在脚本的开头添加这些行:

    error_reporting(E_ALL); // tells PHP to report all errors
    ini_set('display_errors', 1); // tells PHP to display all errors on the screen
    

    文档:arrayini_seterror_reporting

    【讨论】:

    • 感谢 sn-p。现在显示 19,这是准确的,因为 SQL 查询有 19 个“行”。但是,我想做的是让每个“行”附加到 $xmlUrl = $r['FW_ArtSrcLink'];这19个结果中的每一个都吐出来了。跟着我?
    • Jocelyn,请查看上面数据库中1行的简单返回示例。
    • 也许把 $xmlUrl 变成一个数组?
    • 我发现了它在做什么。它获取 19 个结果并仅返回 19 个 rss 提要中每个提要的第一个“项目”以及描述、链接、标题。我如何让它显示 every rss feed 的 every 项目?我非常感谢您的帮助 Jocelyn
    猜你喜欢
    • 1970-01-01
    • 2015-09-09
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多