PHP динамического связывания, как узнать, сколько результатов выбрано из MySQL? - PullRequest
2 голосов
/ 15 августа 2011

Я использую динамический bind_parm, который:

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-> disabled_rows, который всегда -1;И $ mysqli-> num_rows был недоступен, он не был определен в $ mysqli.

Я думаю, что помещать переменную в этот цикл, чтобы считать это, не нужно, есть у кого-нибудь предложение?

Большое спасибо!

1 Ответ

3 голосов
/ 15 августа 2011

Вы можете использовать

$stmt = $this->mysqli->prepare('SELECT FOUND_ROWS()');
$stmt->execute();
$rowsCount = $stmt->fetchColumn(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...