是否可以调用此stmt fetch句子?

时间:2017-03-21 11:34:15

标签: php mysql oop

我是PHP OOP的新手,我在这里有一个问题。是否可以像这样调用fetch句子? $this->stmt->fetch()

我要做的是在我的类中定义$ stmt变量并以不同的方法使用它,即:

class Display {
 private $connection;
private $stmt;

public function __construct ($connection) {
    $this->connection = $connection;
}

public function selectUsersValues() {
    $query = "SELECT name, surname, employment_date FROM employee";
    $this->stmt = $this->connection->dbh->prepare($query);
    $this->stmt->execute();
}
public function displayUsersValues() {

        while ($employee = $this->stmt->fetch()){
         echo "<tr>";
         echo "<td>".$employee['name']."</td>";
         echo "<td>".$employee['surname']."</td>";
         echo "<td>".$employee['employment_date']."</td>";
    }
}
}

基本上在一种方法中,我只想选择值,而在另一种方法中,获取所有结果。这是好事还是我必须在selectUserValues方法中做到这一点?

1 个答案:

答案 0 :(得分:2)

  

我是PHP OOP的新手,我在这里有一个问题。是否可以打电话   像这样取句? $这 - &GT; stmt-&GT;取()

是的,这是可能的。

  

这是好事还是我必须在selectUserValues中完成它   方法

不,这不是一件好事,因为您的客户端代码可以单独使用displayUsersValues方法。该方法与selectUsersValues方法的时间耦合在您的代码中不明确。 所以你应该force代码的用户(几周之后甚至可能是你)使用它们。你可以做这个重构:

class Display {
    private $connection;
    private $stmt;

    public function __construct ($connection) {
        $this->connection = $connection;
    }

    public function selectAndDisplayUsersValues() {
        $query = "SELECT name, surname, employment_date FROM employee";
        $this->stmt = $this->connection->dbh->prepare($query);
        $this->stmt->execute();
        $this->displayUsersValues();
    }

    private function displayUsersValues() {

            while ($employee = $this->stmt->fetch()){
             echo "<tr>";
             echo "<td>".$employee['name']."</td>";
             echo "<td>".$employee['surname']."</td>";
             echo "<td>".$employee['employment_date']."</td>";
             echo "</tr>";
        }
    }
}

注意:您的代码缺少echo "</tr>";