2011-08-15 20 views
2

我使用的是动态bind_parm,那就是:PHP动态绑定,如何知道从MySQL中选择了多少结果?

public function get_result($sql,$types = null,$params = null) { 
$stmt = $this->mysqli->prepare($sql); 

if($types&&$params) 
{ 
    $bind_names[] = $types; 
    for ($i=0; $i<count($params);$i++) 
    { 
     $bind_name = 'bind' . $i; 
     $$bind_name = $params[$i]; 
     $bind_names[] = &$$bind_name; 
    } 
    $return = call_user_func_array(array($stmt,'bind_param'),$bind_names); 
} 

$stmt->execute(); 

# these lines of code below return one dimentional array, similar to mysqli::fetch_assoc() 
$meta = $stmt->result_metadata(); 

while ($field = $meta->fetch_field()) { 
    $var = $field->name; 
    $$var = null; 
    $parameters[$field->name] = &$$var; 
} 

call_user_func_array(array($stmt, 'bind_result'), $parameters); 

while($stmt->fetch()) 
{ 
    $this->handler ($parameters); // Handle queried results 
} 

$stmt->close(); 

}

不过,我不能找回过去的操作过程中有多少行选择,我想$ mysqli-> affected_rows ,这总是-1;而$ mysqli-> num_rows是无法访问的,它在$ mysqli中是未定义的。

我认为把一个变量放在那个循环中来计算它是不必要的,有没有人有建议?

非常感谢!

回答

3

您可以使用

$stmt = $this->mysqli->prepare('SELECT FOUND_ROWS()'); 
$stmt->execute(); 
$rowsCount = $stmt->fetchColumn(0); 
相关问题