我正在尝试为 PHP 制作一个 mysql 查询包装函数,现在我正在尝试使用准备好的语句,因为它们显然是在 SQL 中执行 MySQL 查询的最佳方法,到目前为止,这就是我所拥有的
public function run_query($query)
{
$arguments = $query['arguments'];
$prep = $this->connection->prepare($query['query'])
$dtString = '';
foreach($arguments as $_field => $_argument)
{
$dtString .= array_keys($_argument);
}
}
的结构$query
是这样的
$query = array( "query" => QUERY,
"arguments" => array(FIELD => array(DATATYPE => VALUE)))
和可能的例子$query
是这样的
$query = array( "query" => "SELECT * FROM table_1 WHERE active = ? AND group = ?",
"arguments" => array("active" => array("i" => 1),
"group" => array("i" => 17)))
现在如您所见,我要做的是让我的函数允许任何查询,而不管查询是什么以及您想使用多少个参数。
现在在我的函数中,for each 之后的下一步是使用$prep->bind_param($dtString, [VALUES]);
但是我读到每个值都是函数中的一个单独的参数,这有点搞砸了
我想知道是否有办法让bind_param
我的函数接受可变数量的参数
我当前的解决方案是创建另一个函数,将 $arguments 作为参数传递给函数,将我的 for each 移动到新函数中,并在创建$dtString
计算它的大小并拥有一个只有多个bind_param
但具有不同数量的参数的 switch case 之后这
switch($count)
{
case 1:
$prep->bind_param($dtString, $array[0]);
break;
case 2:
$prep->bind_param($dtString, $array[0], $array[1]);
break;
case 3:
$prep->bind_param($dtString, $array[0], $array[1], $array[2]);
break;
}
但我宁愿避免编写这样的代码