PHP e mysqli - Bind parâmetros utilizando loop e armazenar em matriz?
-
23-08-2019 - |
Pergunta
Abaixo está o meu código para a função que estou usando para recuperar vários dados de minha mesa, mas eu gostaria de usar bind_result ($ array [0], ..., ..) a ser gerado automaticamente dependendo do número de campos i estou selecionando na consulta.
Por exemplo ..
$query=select a,b,c,d,e from table;//selecting 5 fields
......
$stmt->execute();$stmt->bind_result($retrieve[0],$retrieve[1],$retrieve[2],$retrieve[3],$retrieve[4]);
(o bind_result por 5 valores devem ser gerados automaticamente)
Ajuda será apreciada ... Obrigado
$query="SELECT comment, userid,UNIX_TIMESTAMP(dtime)
FROM comment_updates
WHERE updateid=46546
ORDER BY dtime DESC
LIMIT 10 ";
if($stmt = $this->conn->prepare($query)) {
$stmt->execute();
$stmt->bind_result($comments[0],$comments[1],$comments[2]);
$i=0;
while($stmt->fetch()){
$i++;
$name='t'.$i;
$$name = array($comments[0],$comments[1],$comments[2]);
}
return array($i,$t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10);
$stmt->close();
}
Solução
Este deve começar:
http://php.net/manual/en/mysqli -stmt.result-metadata.php
Isso vai te dar o número de campos em seu conjunto de resultados via mysqli_num_fields()
.
Este deve ser o tamanho de sua matriz $retrieve
.
Como bind_result
não tomar uma matriz como um argumento, você vai precisar usar call_user_func_array
para conseguir isso:
call_user_func_array(array($stmt, 'bind_result'), $retrieve_references);
$retrieve_references
deve ser uma matriz de referências aos elementos em $retrieve
. Utilizando-se $retrieve
em call_user_func_array
irá desencadear um erro.