0
我想为PHP做一个mysql查询包装函数,现在我正在尝试使用预准备语句,因为它们显然是最好的方法在SQL查询的MySQL,到目前为止,这是我所有没有办法让bind_param接受可变数量的参数
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)))
现在你可以看到,我正在试图做的是让我的函数允许任何查询,而不管查询是什么以及要使用多少个参数。
现在在我的功能,以后每个接下来的步骤是使用$prep->bind_param($dtString, [VALUES]);
但是我读了每个值就是有点弄乱的东西了
我不知道是否有一个功能的单独的参数办法让bind_param
在我的函数接受可变数量的参数
我目前的解决方案是创建另一个函数,在传递$参数作为参数传递给函数,将我的每一个到新的功能和创建$dtString
后计算它的大小,并有一个只有多个bind_param
但具有不同数量的参数的开关盒就像这个
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;
}
,但我宁愿避免这样
不,你不能避免那个烂摊子。不要忘记,您也将获得类似的娱乐获取查询结果。所以,最好转到PDO,直到太迟 –
@YourCommonSense是否有任何缺点使用PDO在MySQLi上准备好的语句? –
当然可以。如果你更喜欢冗长,复杂和臃肿的代码,转向PDO将是一个痛苦。 –