我创建了一个函数,我打算使用在运行我的查询:
function selectquery ($sql, $params)
{
$connection = getConnect ();
$result = $connection->prepare("$sql");
$result->bind_param($params);
$status = $result->execute();
$return=array('obj'=>$result, 'status' => $status, 'data'=>array());
$meta = $connection->result_metadata();
while ( $field = $meta->fetch_field() )
{
$parameters[] = &$row[$field->name];
}
call_user_func_array(array($result, 'bind_result'), $parameters);
while ( $stmt->fetch())
{
$x = array();
foreach( $row as $key => $val )
{
$x[$key] = $val;
}
$return['data'][] = $x;
}
$result->close();
return $return;
}
我是这样运行查询的:
$resultobj=selectquery ("select id from employers where subdomain = ? ", "s, $reg_subdomain");
出现如下错误:
警告:mysqli_stmt::bind_param()在/home/kju/public_html/ejjk.com/functions.php中的参数计数错误
致命错误:调用未定义方法mysqli::result_metadata()在/home/kju/public_html/ejjk.com/functions.php第45行
可能的问题是什么,我怎样才能解决它
谢谢
mysqli_stmt::bind_param
期望2个参数,但您传递了一个:
function selectquery ($sql, $params) . {}
...
selectquery("....? ", "s, $reg_subdomain" // 1 string parameter, not 2);
// it should be
function selectquery ($sql, $types, $params) . {
... bind_param($sql, $types, $params);
}
selectquery("....? ", "s", $reg_subdomain // 2 parameters);