【发布时间】:2014-06-12 13:58:26
【问题描述】:
我正在尝试将参数添加到我准备好的语句中,查询和数组看起来正确。但是会触发“类型定义字符串中的元素数与绑定变量数不匹配”错误。
$sql = 'SELECT * FROM `feed` ';
$types = array();
$params = array();
if( isset($_GET['p']) ) {
$page = $_GET['p'];
}
else {
$page = 0;
}
if( isset($_GET['q']) ) {
$sql .= 'WHERE `title` LIKE ? ';
$search = $_GET['q'];
array_push($types, 's');
array_push($params, $search);
}
$sql .= 'ORDER BY `time` DESC LIMIT ?, 6';
array_push($types, 'i');
array_push($params, $page);
$stmt = $mysqli->prepare($sql);
$params = array_merge($types, $params);
$refs = array();
foreach($params as $key => $value)
$refs[$key] = &$params[$key];
call_user_func_array(array($stmt, 'bind_param'), $refs);
(从服务器打印)
查询:SELECT * FROM feed WHERE title LIKE ? ORDER BY time DESC LIMIT ?, 6
数组合并:
Array
(
[0] => s
[1] => i
[2] => word
[3] => 0
)
谢谢。
【问题讨论】:
-
不客气。
标签: php mysql prepared-statement