PHP函数没有返回结果

时间:2012-05-12 15:35:30

标签: php mysql function return

我有一个函数loadContent(),在调用时,查询数据库,格式化数据并返回结果。这用于构建一个非常原始的CMS,此函数用于从数据库加载文章。

这是功能问题:

    $articles = mysql_query("SELECT `id`, `name`, `content`, `keywords`, `description`, `access_level` FROM `tb_articles` WHERE `page_id`='$pageID'");
            if(!$articles){
                die('Error!: ' . mysql_error());
            }
            while($arts = mysql_fetch_assoc($articles)){
                $content .= '<div class="article" id="art-' . $arts['id'] . '">';
                $content .= '<h1>' . $arts['name'] . '</h1>';
                $content .= $arts['content'];
                $content .= '</div>';
            }
        return $content; 
    }else{

我的问题是没有任何东西被退回。 SQL已经过验证,它应该返回两行。我已经注释了循环中的所有内容并添加了行$content .= 'test';并将return语句更改为echo $content;并且函数成功地回显了“test”两次。那么我做了什么错了?

感谢您帮助我,我对PHP很新。

更新

该帖子现在代表所有有效的更改。

我到了var_dump的某个地方。我在$content语句之前转储了return。数据库中的所有文章(其中2篇)都显示在string(2445) ""内。这确认了查询没有问题。我现在认为它与return语句有关。

4 个答案:

答案 0 :(得分:3)

不确定这是否相关,但看起来您似乎没有关闭第一个div标记。您也不会关闭id属性引用(使用撇号打开,并连接引号)。

更具体地说:

... id='art-" . $arts['id'] . "'></div>";

答案 1 :(得分:1)

尝试将代码更新为:

function loadContent(){
   $content = '';
   $pageID = 1;
   //
   $articles = mysql_query("SELECT `id`, `name`, `content`, `keywords`, `description`, `access_level` 
                            FROM `tb_articles` 
                            WHERE `page_id`='$pageID'");

        // you only need the associative array
        while($arts = mysql_fetch_array($articles, MYSQL_ASSOC)){
            // close your tag properly and use the concat operator
            $content .= '<div class="article" id="art-' . $arts['id'] . '">';
            $content .= '<h1>' . $arts['name'] . '</h1>';
            $content .= $arts['content'];
            $content .= '</div>';
        }

    return $content;

 }

您也可以在致电mysql_error()后尝试运行mysql_query()以查看是否有任何问题。

您应该检查的另一件事是,在数据库中实际上有一行page_id等于1。您还应确保列名正确无误。

答案 2 :(得分:1)

$content .= "<div class='article' id='art-" . $arts['id'] . '"'; 

它应该是

$content .= "<div class='article' id='art-" . $arts['id'] . "'"; 

答案 3 :(得分:0)

试试这个

error_reporting(E_ALL);
ini_set("display_errors", 1);

function loadContent(){
   $content = '';
   $pageID = 1;
   $myQuery = "SELECT `id`, `name`, `content`, `keywords`, `description`, `access_level` FROM `tb_articles` WHERE `page_id`='{$pageID}'";
   echo $myQuery;
   $myQuery = "SELECT `id`, `name`, `content`, `keywords`, `description`, `access_level` FROM `tb_articles` WHERE `page_id`=" . $pageID;
   echo $myQuery;
   $articles = mysql_query($myQuery) or die("Error found with the Query" . mysql_error());

        while($arts = mysql_fetch_assoc($articles)){
                $content .= "<div class='article' id='art-" . $arts['id'] . '"';
            $content .= '<h1>' . $arts['name'] . '</h1>';
            $content .= $arts['content'];
            $content .= '</div>';
        }

    return $content;

}

尝试并告诉我,如果有效,我会更新说明。

更新

代码已更新,现在有两个查询,单独执行每个查询并检查。