将 table 变量传递给 SELECT 函数

Pass table variable to SELECT function

我有一个 getData() 函数和一个包含两个 table 的数据库:雇主和成员。 我想传递一个包含 table 名称的变量,因此在 "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;