Может кто-нибудь помочь объяснить, как работает эта функция (mysqli подготовил функцию массива статистики) - PullRequest
2 голосов
/ 12 мая 2011

Мне просто нужно немного помочь, как я мог бы реализовать эту функцию.Я не могу прочитать это.Я обнаружил, что эта функция вставляет результаты из подготовленного запроса mysqli в массив, что я и пытаюсь сделать, но я не уверен, как использовать функцию.

$meta = $statement->result_metadata(); 

while ($field = $meta->fetch_field()) { 
    $params[] = &$row[$field->name]; 
} 

call_user_func_array(array($statement, 'bind_result'), $params);                
while ($statement->fetch()) { 
    foreach($row as $key => $val) { 
        $c[$key] = $val; 
    } 
    $hits[] = $c; 
} 
$statement->close();

1 Ответ

1 голос
/ 12 мая 2011
while ($field = $meta->fetch_field()) { 
    $params[] = &$row[$field->name]; 
}

Это просматривает набор результатов и извлекает имена полей в массив.

call_user_func_array(array($statement, 'bind_result'), $params);                

Этот массив имен полей затем используется для автоматического создания переменных с тем же именем, что и поле, к которому привязаны результаты базы данных.Это очень плохая практика, поскольку она автоматически создает переменные на основе результатов запроса и потенциально может перезаписать переменную, которую вы будете использовать для других целей в других местах.Вы никогда не узнаете почему, потому что нет явного присвоения имени переменной для поиска.

Цикл while крайне неэффективен, но извлекает каждую строку из результатов запроса и помещает их в массив с именем * 1007.*.

Так что, по сути, это позолоченный кусок бычьих экскрементов, который впечатляюще мало что делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...