Php 将可变数量的值绑定到准备好的语句

Php 将可变数量的值绑定到准备好的语句,php,mysql,mysqli,prepared-statement,procedural,Php,Mysql,Mysqli,Prepared Statement,Procedural,我目前正努力解决MySQLi准备好的声明中的一个小问题。我正在尝试编写一个定制PHP函数,它接受一些变量,并使用它们通过prepared语句将一些数据写入数据库中的表中 问题是我需要函数接受任意数量的参数 正在运行的函数示例: db_insert_secure("Goals", "(Name, Description, Type, ProjectID)", $data); 这将把$data数组中存储的所有信息写入Goals表中指定的(4)行中 但是,由于参数的数量可能会发生变化,因此我无法想出

我目前正努力解决MySQLi准备好的声明中的一个小问题。我正在尝试编写一个定制PHP函数,它接受一些变量,并使用它们通过prepared语句将一些数据写入数据库中的表中

问题是我需要函数接受任意数量的参数

正在运行的函数示例:

db_insert_secure("Goals", "(Name, Description, Type, ProjectID)", $data);
这将把$data数组中存储的所有信息写入Goals表中指定的(4)行中

但是,由于参数的数量可能会发生变化,因此我无法想出一种有效地绑定它们的方法

我的一个想法是使用一个switch语句来处理绑定不同数量的参数,但我相信这不是最有说服力或最有效的方法

整个脚本:

function db_insert_secure($table, $columns, $data)
{
    $link = db_connect();

    $inputData = explode(",", $columns);
    $query = "INSERT INTO ".$table." ".$columns." VALUES (";

    for ($i = 0; $i < sizeof($inputData); $i ++)
    {
            $query .= "?";

            if ($i != sizeof($inputData) - 1)
            {
                $query .= ", ";
            }
    }

    $query .= ")";
    echo $query;

    $check_statement = mysqli_prepare($link, $query);
    //mysqli_stmt_bind_param($check_statement, 's', $data[0]);

    echo $check_statement;

    db_disconnect($link);
}
函数db\u insert\u secure($table、$columns、$data)
{
$link=db_connect();
$inputData=分解(“,”,$columns);
$query=“插入到“$table.”$columns.”值(“;
对于($i=0;$i
注意:db_connect和db_disconnect脚本是用于打开和关闭数据库连接的自定义脚本。db_connect只返回连接对象


有谁能想出一个解决这个问题的方法,而不是使用eval吗?

有趣的是,在过去12个小时左右的时间里,我实际上在开始这个线程的几分钟内找到了解决问题的方法

您可以将数组作为已准备语句的数据,方法是在其前面放置“…”。 例如,在我的例子中:

mysqli_stmt_bind_param($preparedStatement, 'ssss', ...$data);
你见过这个吗