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.
CR_COMMANDS_OUT_OF_SYNC
Os comando foram executados em uma ordem inpropriada.
CR_OUT_OF_MEMORY
Sem memória.
CR_SERVER_GONE_ERROR
O servidor MariaDB foi finalizado.
CR_SERVER_LOST
A conexão ao servidor MariaDB foi perdida durante a consulta.
CR_UNKNOWN_ERROR
Um erro desconhecido ocorreu.