PHP不显示数据库中的数据

时间:2011-09-01 00:24:33

标签: php mysql

我试图在PHP中显示来自MySql数据库的注释列表。

foreach循环工作,因为它为数据库中的每个注释显示必要的html,但没有从数据库中获取实际内容。

评论课

class Comment {
protected $_id;
protected $_user;
protected $_commentText;
protected $_dateTimePosted;

public function __construct()
{
    $this->_dateTimePosted = new DateTime();
    $this->_dateTimePosted->format(DATE_RFC3339);
}

public function get_id()
{
    return $this->_id;
}
public function set_id($value)
{
    $this->_id = $value;
}
public function get_user()
{
    return $this->_user;
}
public function set_user($value)
{
    $this->_user = $value;
}
public function get_commentText()
{
    return $this->_commentText;
}
public function set_commentText($value)
{
    $this->_commentText = $value;
}
public function get_dateTimePosted()
{
    return $this->_dateTimePosted;
}
public function set_dateTimePosted($value)
{
    $this->_dateTimePosted = $value;
}
}

CommentFunctions.php

include 'dbConnect.php';

class CommentFunctions {

protected $conn;

public function __construct()
{
    $this->conn = dbConnect();
}
public function get_comments()
{
    $sql = "SELECT * FROM comments";

    $stmt = $this->conn->stmt_init();

    $stmt->prepare($sql);

    $stmt->execute();

    $stmt->store_result();

    $comments = array();

    while ($row = $stmt->fetch())
    {
        $comment = new Comment();

        $comment->set_id($row['id']);
        $comment->set_user($row['user']);
        $comment->set_commentText($row['comment_text']);
        $comment->set_dateTimePosted($row['datetime_posted']);

        $comments[] = $comment;
    }

    return $comments;
}
}

的index.php

<?php
include './includes/Comment.php';
include './includes/CommentFunctions.php';

$comments_func = new CommentFunctions();

$all_comments = $comments_func->get_comments();

?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Comments</title>
        <link rel="stylesheet" type="text/css" href="./css/Master.css" />
        <link rel="stylesheet" type="text/css" href="./css/Site.css" />
    </head>
    <body>
        <div id="Container">
        <h2>Comments</h2>
        <a class="reload-comments" href="/">Refresh</a>
        <div id="Comments">
            <?php if (!$all_comments) {
                echo 'No comments yet.';
            } ?>
            <?php foreach ($all_comments as $c) { ?>
            <div class="comment">
                <input class="id" type="hidden" value="<?php echo $c->get_id(); ?>" />
                <div class="author">Posted by <?php echo $c->get_user(); ?></div>
                <div class="comment-text">
                    Posted <?php echo $c->get_dateTimePosted(); ?>
                    <p><?php echo $c->get_commentText(); ?></p>
                </div>
            </div>
            <?php } ?>
        </div>
        <div id="AddComment">
            <form name="add_comment_form" id="add_comment_form" action="index.php" method="post">
                <label for="user">Your Name:</label>
                <input name="user" id="user" type="text" /><br />
                <label for="comment_text">Comment:</label>
                <textarea name="comment_text" id="comment_text" rows="5" cols="10"></textarea><br />
                <input name="submit" id="submit" type="submit" value="Submit" />
                <input id="reset" type="reset" class="hidden" />
            </form>
        </div>
        <div class="loader"></div>
        <div class="response"></div>
    </div>
</body>

可以添加注释,数据在数据库中存储得很好,并且循环运行的次数正确,但代码如echo $ c-&gt; get_commentText();没有显示值。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

看起来你正在使用mysqli。

您忘记了关键步骤:绑定结果变量。

有关如何获取实际值的更多信息,请参阅http://www.php.net/manual/en/mysqli-stmt.bind-result.php及其中的示例。

答案 1 :(得分:0)

尝试

var_dump($all_comments) 

获取后,以证明数组中确实存在某些内容

下一步是检查sql是否有效。我不确定你使用的数据库层是什么,所以我不确定要做什么检查。

我认为这个方法应该有一个你可以检查的返回值

  

$ stmt-&GT;执行();