查询:来自特定 table 的 select 个特定字段
Query: select specific fields from specific table
我正在尝试创建一个登录功能,它允许我指定 table 我想要 select 来自的数据,以及我想要 select 的字段。
我已经设法将 table 值传递给函数,并从所需的 table 传递 select 数据,但我的 table 有不同的字段。我如何在查询中指定它是一个 table select: user_id, user_first_name, user_password ,或者如果它是另一个 table select member_id, member_first_name, member_password.
这是我目前编写的代码:
public function logIn($id, $password, $table){
$dataArray = array();
$t = ($table === 'employers') ? 'employers' : 'members');
$query = "SELECT user_id, user_first_name, user_password FROM $t";
$stmt = $this->link->prepare($query);
if ($stmt->execute())
{
$result = $stmt->get_result();
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
$dbuser_id = $row['user_id'];
$dbpassword = $row['user_password'];
$dbuser_first_name = $row['user_first_name'];
}
//and so on...
另外,一个简单的问题:这是一种糟糕的编程习惯,还是我应该有 2 个登录名(成员和用户)?
谢谢 :)
编程中的单一职责原则旨在防止此类事情发生 - 目标是让一个 class/function 承担一项职责,而不是像您一样必须管理 2 个(或可能更多)这里。简而言之,这是一种糟糕的编程习惯,您应该像您所说的那样拥有 2 个登录功能。在完成 2 个不同的功能后,switch
语句可能有助于检查成员登录与用户登录的情况。
注意:也有例外情况。但是,在您的情况下,将两者分开会更有意义。
这里有一个link进一步解释SRP和SOLID设计原则:
我正在尝试创建一个登录功能,它允许我指定 table 我想要 select 来自的数据,以及我想要 select 的字段。 我已经设法将 table 值传递给函数,并从所需的 table 传递 select 数据,但我的 table 有不同的字段。我如何在查询中指定它是一个 table select: user_id, user_first_name, user_password ,或者如果它是另一个 table select member_id, member_first_name, member_password.
这是我目前编写的代码:
public function logIn($id, $password, $table){
$dataArray = array();
$t = ($table === 'employers') ? 'employers' : 'members');
$query = "SELECT user_id, user_first_name, user_password FROM $t";
$stmt = $this->link->prepare($query);
if ($stmt->execute())
{
$result = $stmt->get_result();
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
$dbuser_id = $row['user_id'];
$dbpassword = $row['user_password'];
$dbuser_first_name = $row['user_first_name'];
}
//and so on...
另外,一个简单的问题:这是一种糟糕的编程习惯,还是我应该有 2 个登录名(成员和用户)?
谢谢 :)
编程中的单一职责原则旨在防止此类事情发生 - 目标是让一个 class/function 承担一项职责,而不是像您一样必须管理 2 个(或可能更多)这里。简而言之,这是一种糟糕的编程习惯,您应该像您所说的那样拥有 2 个登录功能。在完成 2 个不同的功能后,switch
语句可能有助于检查成员登录与用户登录的情况。
注意:也有例外情况。但是,在您的情况下,将两者分开会更有意义。
这里有一个link进一步解释SRP和SOLID设计原则: