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();
        }
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top