PHP访问作为分离变量的变量数组

PHP访问作为分离变量的变量数组,php,arrays,variables,prepared-statement,Php,Arrays,Variables,Prepared Statement,我试图通过准备好的语句为select行编写一个类和方法 我陷入了一个有趣的问题 我不能分配像$variables=[$var1,$var2,$var3]这样的变量数组到一个函数,并像使用my_函数一样单独使用它们($var1,$var2,$var3)这样我就可以使用我的函数($variables)这可能吗?请注意,my_函数不接受数组 在我的代码中: 所以当我运行这个: $query = "SELECT * FROM books as b where b.id=?"; $re

我试图通过准备好的语句为select行编写一个类和方法

我陷入了一个有趣的问题

我不能分配像
$variables=[$var1,$var2,$var3]这样的变量数组到一个函数,并像使用my_函数一样单独使用它们($var1,$var2,$var3)
这样我就可以使用
我的函数($variables)
这可能吗?请注意,
my_函数
不接受数组

在我的代码中:

所以当我运行这个:

$query = "SELECT * FROM books as b where b.id=?";
$result = Query::select($query, 'i', 1);
$query = "SELECT * FROM books as b where b.id=? b.name=?";
$name = 'Sam';
$result = Query::select($query, 'is', 1,$name);
或者当我运行此命令时:

$query = "SELECT * FROM books as b where b.id=?";
$result = Query::select($query, 'i', 1);
$query = "SELECT * FROM books as b where b.id=? b.name=?";
$name = 'Sam';
$result = Query::select($query, 'is', 1,$name);
此方法将执行:

public static function select($query, $string_of_types, ...$variables)
    {
        $mysql = new Mysqli(DB::$servername, DB::$username, DB::$password, DB::$databasename);
        $stmt = $mysql->prepare($query);

        ///////start mess up//////
        if(count($variables) == 1)
            $stmt->bind_param($string_of_types, $variables[0]);
        if(count($variables) == 2)
            $stmt->bind_param($string_of_types, $variables[0], $variables[1]);
        if(count($variables) == 3)
            $stmt->bind_param($string_of_types, $variables[0], $variables[1], $variables[2]);
        
        
        $stmt->execute();
        $result = $stmt->get_result();
        return $result;
    }
这很有效,但我知道我走错了方向

我怎样才能把这个烂摊子收拾好


如果我奇迹般地删除
[]
周围的
$variables
,那么一切都会正常工作。因此我可以编写
$stmt->bind_param($string_of_types,$variables)

您要查找的是splat运算符(
..
),它将数组解压到函数参数列表中:

$stmt->bind_参数($string_of_type,…$variables);

对不起,我就知道,36个多小时不睡觉让我很困惑。。。