【发布时间】:2013-09-07 08:58:23
【问题描述】:
我收到以下错误:
Warning: Wrong parameter count for mysqli_stmt::bind_param()
我相信这是因为我以错误的方式将参数分配给 bind_param 方法。问题是如何将参数数组传递给bind_param?
这是我的功能:
function read($sql, $params)
{
$parameters = array();
$results = array();
// connect
$mysql = new mysqli('localhost', 'root', 'root', 'db') or die('There was a problem connecting to the database. Please try again later.');
// prepare
$stmt = $mysql->prepare($sql) or die('Error preparing the query');
// bind param ????????????
call_user_func_array(array($stmt, 'bind_param'), $params);
// execute
$stmt->execute();
// bind result
$meta = $stmt->result_metadata();
while ( $field = $meta->fetch_field() ) {
$parameters[] = &$row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $parameters);
// fetch
while( $stmt->fetch() ) {
$x = array();
foreach( $row as $key => $val ) {
$x[$key] = $val;
}
$results[] = $x;
}
return $results;
}
我是这样称呼它的:
$params = array('i'=>$get_release, 'i'=>$status);
$result_set = read('SELECT release_id, release_group_id, status_id, name, subname, description, released_day, released_month, released_year, country_id, note, is_master_release, seo_url, meta_description, is_purchased FROM `release` WHERE release_id = ? AND status_id = ?', $params);
【问题讨论】:
-
您是在尝试执行多个查询还是尝试将多个参数绑定到单个查询?
-
我试图将许多参数绑定到单个查询。我虽然使用关联数组将类型和值传递给 bind_param
-
您使用 MySQLi 的原因有哪些?我认为 PDO 的离散
PDOStatement::bindParam会更合适 -
@Phil 也许在未来的更新中我会使用 pdo
标签: php mysql prepared-statement