campo de banco de dados passe através da função PHP antes do resultado voltando - MySQL
-
23-08-2019 - |
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 ...
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.