0

我正在尝试生成一个变量使用的值数组,但我无法让它工作。我不想“看到”结果。相反,我希望变量“使用”结果。这是我的代码:

$rss_results = mysql_query("SELECT feed_id, feed_url, feed_title, feed_order, feed_page_id FROM user_feeds  WHERE ((feed_owner = '" . $_SESSION['UserId'] . "'));");

    if ($rss_results) {

    while($row = mysql_fetch_array($rss_results))
    {
    $feed->set_feed_url(print "'".$row[feed_url]."',");

    }

    }
    else {
      // something went wrong.
      echo mysql_error();

问题出在这条线上:

$feed->set_feed_url(print "'".$row[feed_url]."',");

编辑 1) 是的。我知道 print 不属于那里。在之前进行了一些故障排除后,我忘记将其删除。

2) 我正在尝试将此代码与一个名为 SimplePie 的 RSS 解析器一起使用。

3)每个人似乎都同意以下代码有效

   $feed->set_feed_url(array("'" . $row['feed_url'] . "',"));

...但事实并非如此。如果我没有访问我的数据库,代码看起来像这样......

$feed->set_feed_url(array('http://www.tmz.com/rss.xml', 'feed://rss.cbc.ca/lineup/topstories.xml'));

...效果很好。我正在尝试使用存储在 mysql 数据库中的值来重现这种效果。如果代码有效,它将有效。所以“应该”工作的代码一定有问题。

4

1 回答 1

1

访问关联数组时,必须将索引名称放在引号内:

代替

$row[feed_url]

利用

$row['feed_url']

还,

$feed->set_feed_url(print "'".$row[feed_url]."',");

没有意义。如果要将值传递给方法,请传递变量,不要将其打印到屏幕上。

$feed->set_feed_url("'" . $row['feed_url'] . "',");

如果您不希望将传递给的字符串$feed->set_feed_url()包含在's 中,只需像常规变量一样传递它:

$feed->set_feed_url($row['feed_url']);

更新:

既然你提到你试图传递一个数组,你必须先初始化它,然后填充它,然后将它发送到方法:

$urls = array();
while ($row = mysql_fetch_array($rss_results)) {
    $urls[] = $row['feed_url'];
}
$feed->set_feed_url($urls);

这样做:

$feed->set_feed_url(array("'" . $row['feed_url'] . "',"));

只需将以下内容传递给$feed->set_feed_url()

array(
    [0] => String() "'[value of $row['feed_url'] ]',"
)

如果您想$feed->set_feed_url()为循环的每次迭代调用一次,这将正常工作:

while($row = mysql_fetch_array($rss_results)) {
    $feed->set_feed_url(array($row['feed_url']));
}

请注意:您应该停止使用mysql_*函数。它们正在被弃用。而是使用PDO(从 PHP 5.1 开始支持)或mysqli(从 PHP 4.1 开始支持)。如果您不确定要使用哪一个,请阅读这篇 SO 文章

于 2012-08-07T15:44:48.613 回答