mysql_use_result()


MYSQL_RES *mysql_use_result(MYSQL *mysql)

Descrição

Você deve chamar mysql_store_result() ou mysql_use_result() para cada consulta que retornar data com sucesso (SELECT, SHOW, DESCRIBE, EXPLAIN).

mysql_use_result() inicicia a recuperação de um resultado mas não lê realmente o resultado no cliente como mysql_store_result() faz. Cada regiostro deve ser recuperado individualmente fazendo chamadas a mysql_fetch_row(). Ele lê o resultado de uma consulta diretamente do servidor sem armazenar em uma tabela temporária ou em um buffer local, o o que é mais rápido e utiliza menos memória que mysql_store_result(). O cliente sío irá alocar memória para o registro atual para o buffer de comunicação que pode crescer para max_allowed_packet bytes.

Por outro lado , você não deve utilizar mysql_use_result() se você estiver fazendo vários processamentos para cada registros no lado do cliente, ou se a saída é enviada para a tela, na qual o usuário de digitar um ^S (parada de tela). Isto irá prender o servidor e impedir outras threads de atualizar qualquer tabela na qual o dados esteja sendo buascado.

Ao usar mysql_use_result(), você deve executar mysql_fetch_row() até um valor NULL ser retornado, senão, os registros não buscados retornarão como part do resultado de sua próxima consulta. A API C fornecerá o erro Commands out of sync; you can't run this command now se você esquecer de fazê-lo.

Você não pode utilizar mysql_data_seek(), mysql_row_seek(), mysql_row_tell(), mysql_num_rows(), ou mysql_affected_rows() com m resultado retornado de mysql_use_result(), nem pode executar outras consultas até que mysql_use_result() tenha finalizado. (No entanto, depois de buscar todos os regitros, mysql_num_rows() retornará corretamente o número de regiostros buscados).

Você deve chamar mysql_free_result() após terminar de utilizar o resultado.

Valor Retornado

Uma estrutura de resultado MYSQL_RES. NULL se ocorrer um erro.

Erros

mysql_use_result() zera mysql_error e mysql_errno se ela obter sucesso.

Retornar