使用oop php显示SELECT查询结果

时间:2015-11-07 02:28:29

标签: php oop mysqli

我是一个执行OOP的总菜鸟,我目前正在寻找重构一个程序化的PHP项目。目前,我在尝试简单地从SELECT查询中显示我的结果时遇到了问题 - 具有讽刺意味的是,执行INSERT查询是有意义的。这是我的类文件:

<?php
 class MadLibs {                
    private $noun;
    private $verb;
    private $adverb;
    private $adjective;
    private $story;

    // Getters
    public function getNoun() {
        return $this->noun;
    }
    public function getVerb() {
        return $this->verb;
    }
    public function getAdverb() {
        return $this->adverb;
    }
    public function getAdjective() {
        return $this->adjective;
    }
    public function getStory() {
        return $this->story;
    }        
    // Setters
    public function setNoun($noun) {
        $this->noun = $noun;
    }
    public function setVerb($verb) {
        $this->verb = $verb;
    }
    public function setAdverb($adverb) {
        $this->adverb = $adverb;
    }
    public function setAdjective($adjective) {
        $this->adjective = $adjective;
    }
    public function setStory($story) {
        $this->story = $story;
    }
    // Figured this one out
    public function insertStoryToDatabase() {
        date_default_timezone_set('America/Chicago');
        $submit_date    = date('Y-m-d' . " " . 'H:i:s');            
        $dbc = mysqli_connect('localhost','root','','mad_libs')
            or die('Error establishing connection');                        
        $query  = "INSERT INTO storyTime (noun, verb, adjective, adverb, createdDate, fullStory) " .
                "VALUES ('$this->noun','$this->verb','$this->adjective','$this->adverb','$submit_date','$this->story')";            
        mysqli_query($dbc,$query)
                or die('Error querying database');                    
        mysqli_close($dbc);
    }
    // method I am having trouble setting up
    public function displayAllStories() {
        $dbc = mysqli_connect('localhost','root','','mad_libs')
            or die('Error establishing connection');                
        $result      = "SELECT fullStory, createdDate FROM storyTime ORDER BY createdDate DESC";            
        $display    = mysqli_query($dbc,$result)
                or die('Error gathering data!');            
        while ($row = mysqli_fetch_array($display)) {
            echo $row['story'] . '<br/>';
        }
        return $display;
    }      
  }    
?>

这就是我在其他php文件中所做的事情:

<?php
    require_once('MadLibs.php');
    // Instantiating instance of MadLibs()
    $foo = new MadLibs();

    // Playing around to see ensure getters/setters were correct
    $foo->setNoun('Bob');
    $foo->setVerb('jumps');
    $foo->setAdverb('quietly');
    $foo->setAdjective('ugly');
    $foo->setStory("The " .  $foo->getNoun() . " always "  . $foo->getVerb() . " at the " 
. $foo->getAdjective() . " strangers " . $foo->getAdverb() . ".");    
    echo $foo->getNoun();
    echo '<br />';
    echo $foo->getVerb();
    echo '<br />';
    echo $foo->getAdverb();
    echo '<br />';
    echo $foo->getAdjective();
    echo '<br />';
    echo $foo->getStory();

    $foo->insertStoryToDatabase();

    $foo->displayAllStories();    
?>    

我确信这很简单,但对于我的生活,我无法弄清楚我做错了什么。

非常感谢任何反馈!

1 个答案:

答案 0 :(得分:0)

您试图在displayAllStories()函数中显示错误的变量。 &#39; echo $ row [&#39; story&#39;] should be change to $ row [&#39; fullStory&#39;];`或将您的查询更改为

SELECT fullStory as story, createdDate FROM storyTime ORDER BY createdDate DESC