Php 是否可以调用此stmt fetch语句?
我是PHP OOP新手,这里有一个问题。可以这样调用fetch语句吗?Php 是否可以调用此stmt fetch语句?,php,mysql,oop,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 s
$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>";
}
}
}
类显示{
私人连接;
私人$stmt;
公共功能构造($connection){
$this->connection=$connection;
}
公共函数selectUsersValues(){
$query=“从员工处选择姓名、姓氏、雇用日期”;
$this->stmt=$this->connection->dbh->prepare($query);
$this->stmt->execute();
}
公共函数displayUsersValues(){
而($employee=$this->stmt->fetch()){
回声“;
回显“$employee['name']”;
回显“$employee[‘姓氏’”;
echo“$employee['employment_date'”;
}
}
}
基本上,在一个方法中,我只想选择值,在另一个方法中获取所有结果。这是一件好事还是我必须在selectUserValues
方法中这样做
我是PHP OOP新手,这里有一个问题。可以打电话吗
这样的句子$这个->stmt->fetch()
是的,这是可能的
这是一件好事还是我必须在selectUserValues中这样做
方法
不,这不是一件好事,因为客户端代码可以单独使用displayUsersValues
方法。该方法与selectUsersValues
方法存在时间耦合,而该方法在代码中并不明确。
因此,您应该强制您代码的用户(甚至可能是您,几周后)同时使用这两种代码。您可以进行以下重构:
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>";
}
}
}
类显示{
私人连接;
私人$stmt;
公共功能构造($connection){
$this->connection=$connection;
}
公共函数selectAndDisplayUsersValues(){
$query=“从员工处选择姓名、姓氏、雇用日期”;
$this->stmt=$this->connection->dbh->prepare($query);
$this->stmt->execute();
$this->displayUsersValue();
}
私有函数displayUsersValues(){
而($employee=$this->stmt->fetch()){
回声“;
回显“$employee['name']”;
回显“$employee[‘姓氏’”;
echo“$employee['employment_date'”;
回声“;
}
}
}
注意:您的代码缺少一个echo”“代码>你试过了吗?我试过了,但上面写着未定义的stmt
variablealso,你的代码缺少一个echo“”;伙计,非常感谢你抽出时间。但你能再解释一件事吗?时间耦合是什么?你救了我的命时间耦合
意味着一段代码依赖于在它之前运行的另一段代码。此外,命名非常重要,因此你需要尽可能多地从方法的签名中辨别出来。读者必须通过查看其签名来了解方法的功能。他/她一定不能理解它是如何做到的,但它做了什么。我会尝试改进我的其他方法名称,谢谢你的建议!