我有一个函数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语句有关。
答案 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;
}
尝试并告诉我,如果有效,我会更新说明。
的更新强> 的
代码已更新,现在有两个查询,单独执行每个查询并检查。