Pergunta

O seguinte código de http: //php.morva NET / manual / en / mysqli-stmt.bind-result.php mostra uma consulta mysqli ser preparados e executados. while ($ stmt-> fetch ()) olha loop como ele está gerando o recurso de resultado. Posso mudar isso para incluir uma chamada para uma função, por exemplo,

while ($stmt->fetch()) {
       foreach($row as $key => $val)
       {
           $c[$key] = performFunction($val);
       }
       $result[] = $c;
   }

Então, em vez de print_r ($ resultado) eu gostaria de voltar ($ resultado). Dessa forma eu posso alterar dinamicamente o valor de US $ val
O código original =

if ($stmt = $mysqli->prepare("SELECT * FROM sample WHERE t2 LIKE ?")) {
   $tt2 = '%';
     $stmt->bind_param("s", $tt2);
   $stmt->execute();

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

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

   while ($stmt->fetch()) {
       foreach($row as $key => $val)
       {
           $c[$key] = $val;
       }
       $result[] = $c;
   }
     $stmt->close();
}
$mysqli->close();
print_r($result);

Será que este trabalho, de que outra forma eu poderia fazer isso?
Obrigado a todos ...

Foi útil?

Solução

Você pode usar uma UDF (User Defined Function) para processar os dados no lado do MySQL de coisas antes que ele nunca faz-lo de volta para o PHP.

Outras dicas

Isso é um método perfeitamente válido, embora eu suspeito que o seu código de implementação de exemplo não vai muito trabalho. Você é provavelmente melhor fora de ir buscar um objeto mysqli_result, chamando fetch_assoc sobre ele, e empurrando a matriz associativa, resultando em seu conjunto de resultados, em vez de fazer a matriz associativa si mesmo.

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