我是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
方法中做到这一点?
答案 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>";