php
  • mysql
  • arrays
  • 2012-08-07 43 views 0 likes 
    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)是的。我知道印刷品不屬於那裏。在早些時候進行一些故障排除後,我忘了將其刪除

    2)我正在嘗試將此代碼與RSS解析器calleld SimplePie一起使用。

    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

    這對你的問題沒有幫助,但應該注意,你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果你不確定使用哪一個,[閱讀這篇文章](http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons)。 – Matt 2012-08-07 15:43:42

    +0

    你爲什麼將方法參數設置爲'print'?這是沒有意義的,你傳遞變量的方法....不是打印字符... – 2012-08-07 15:45:29

    +0

    @DavidBarker - 其實,print()總是返回1,所以你沒有傳遞打印字符,你總是傳遞1 。 – nickb 2012-08-07 15:48:29

    回答

    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']); 
    

    UPDATE:

    由於你提到你正在嘗試傳遞一個數組,你必須首先初始化它,然後填充它,然後將它發送給方法:

    $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起支持)。如果您不確定要使用哪一個,請致電read this SO article

    +0

    正是我在想:) – 2012-08-07 15:47:24

    +0

    我忘了從早先測試某些東西時刪除打印。此外,我嘗試了你建議的代碼,它似乎並沒有工作。 – Richard 2012-08-07 15:56:02

    +0

    @Richard什麼'var_dump($ row ['feed_url']);退出();循環內產生? – Matt 2012-08-07 15:57:02

    相關問題