将表变量传递给SELECT函数


Pass table variable to SELECT function

我有一个getData()函数和一个包含两个表的数据库:雇主和成员。我想传递一个包含表名的变量,因此在"if"中我可以执行适当的SELECT语句。我的问题是,在"if"之后,$stmt->bind_param();不知道绑定哪个$stmt。关于我该如何做到这一点,有什么想法吗?

感谢

public function getData($table)
{
    if ($table == "employers")
    {
    $stmt = $this->link->prepare("SELECT * FROM employers ");
    }
    else
    {
    $stmt = $this->link->prepare("SELECT * FROM members ");
    } 
    $stmt->bind_param();
    if ($stmt->execute())
    {
        $result = $stmt->get_result();
        while($row = $result->fetch_array(MYSQLI_ASSOC))
            { 
            $row = array_map('stripslashes', $row);
            $dataArray[] = $row;
            }
    }
    return $dataArray;      
}

不,因为您没有绑定任何内容,所以->bind_param方法是多余的。把它取下来。

public function getData($table)
{
    $dataArray = array();
    $t = ($table === 'employers') ? 'employers' : 'members';
    $query = "SELECT * FROM $t";
    $stmt = $this->link->prepare($query);
    if($stmt->execute()) {
        $result = $stmt->get_result();
        while($row = $result->fetch_assoc()) {
            $row = array_map('stripslashes', $row);
            $dataArray[] = $row;
        }
    }
    return $dataArray;
}

示例用法:

$data = $aministrator_query->getData('members');
$tbody = '';
foreach($data as $row) {
    $tbody .= "<tr><td>{$row['user_id']}</td><td>{$row['user_password']}</td><td>{$row['user_first_name']}</td><td>{$row['user_last_name']}</td></tr>";
}
$table = sprintf('<table><thead><tr><th>ID</th><th>Password</th><th>First Name</th><th>Last Name</th></tr></thead><tbody>%s</tbody></table>', $tbody);
echo $table;