【发布时间】:2015-04-11 04:13:58
【问题描述】:
您好,我在合并数组和绑定参数时遇到了一些问题。
错误消息 = 警告:mysqli_stmt::bind_param(): 元素数 类型定义中的字符串与绑定变量的数量不匹配 在.......
$headline = $_GET['hl'];
$county = $_GET['ca'];
$categories = $_GET['co'];
$query = 'SELECT COUNT(id) FROM main_table';
$queryCond = array();
$stringtype = array();
$variable = array();
if (!empty($headline)) {
$queryCond[] = "headline LIKE CONCAT ('%', ? , '%')";
array_push($stringtype, 's');
array_push($variable, $headline);
}
if (!empty($county)) {
$queryCond[] = "county_id = ?";
array_push($stringtype, 'i');
array_push($variable, $county);
}
if (!empty($categories)) {
$queryCond[] = "categories_id = ?";
array_push($stringtype, 'i');
array_push($variable, $categories);
}
if (count($queryCond)) {
$query .= ' WHERE ' . implode(' AND ', $queryCond);
}
//var_dump($query);
$stmt = $mysqli->prepare($query);
$variable = array_merge($stringtype, $variable);
print_r($variable);
//var_dump($refs);
$refs = array();
foreach($variable as $key => $value)
$refs[$key] = &$variable[$key];
call_user_func_array(array($stmt, 'bind_param'), $refs);
【问题讨论】:
-
print_r($variable); 的输出是什么
-
数组 ( [0] => s [1] => i [2] => 搜索 [3] => 2000 )
-
$variable = array_merge($stringtype, ...中的$stringtype应该是一个字符串连接在一起的类型。即implode('', $stringtype) -
是的,我试图以某种方式实现这一目标。像这个数组( [0] => si [1] => search [2] => 2000 )
标签: php mysqli prepared-statement