在底部,我有一个函数,它接受一系列MySQL查询并自动准备语句。所以我可以设置如下的数组:
$queryTest = array(
array(
'query' => 'SELECT * FROM tools WHERE RFID_tag = ? AND editedByID = ?',
'paramTypes' => 'si',
'params' => array('EXAMPLE_RFID_TAG', 1001)
),
array(
'query' => 'SELECT * FROM tool_categories WHERE categoryID = ?',
'paramTypes' => 'i',
'params' => array(1)
)
);
然后拨打$resultArray = db_multi_query($queryTest);
然后你可以处理它,不管你认为合适。
我的问题是:有没有更好的方法来确定我的数组中的语句变量的数量,以自动填充bind_param变量,而不是通过检查变量的数量{{1然后manaully向bind_param添加更多变量?我希望它能自动使用变量填充bind_param,这样我就可以缩短这个函数并使其成为我不能限制在函数中设置if(count($query['params']) == 5){
的数量。
if(count($query['params']) == int){
提前谢谢。
答案 0 :(得分:1)
使用Array Unpacking,又名" splat"在PHP 5.6.0中引入的运算符(和官方称为" Variadics"),您可以解包" params"将数组放入bind_param()
来电,以便替换
if(count($query['params']) == 1){
$MySQLquery->bind_param($query['paramTypes'], $query['params'][0]);
}
if(count($query['params']) == 2){
$MySQLquery->bind_param($query['paramTypes'], $query['params'][0], $query['params'][1]);
}
if(count($query['params']) == 3){
$MySQLquery->bind_param($query['paramTypes'], $query['params'][0], $query['params'][1], $query['params'][2]);
}
if(count($query['params']) == 4){
$MySQLquery->bind_param($query['paramTypes'], $query['params'][0], $query['params'][1], $query['params'][2], $query['params'][3]);
}
if(count($query['params']) == 5){
$MySQLquery->bind_param($query['paramTypes'], $query['params'][0], $query['params'][1], $query['params'][2], $query['params'][3], $query['params'][4]);
}
带
if(count($query['params']) > 1) {
$MySQLquery->bind_param($query['paramTypes'], ...$query['params']);
}
然后,只要数字与您的$query['paramTypes']