2009-04-03 4 views
0

Le code suivant de http://php.morva.net/manual/en/mysqli-stmt.bind-result.php montre une requête mysqli en cours de préparation et d'exécution. while ($ stmt-> fetch()) ressemble à la génération de la ressource résultat. Puis-je changer ceci pour inclure un appel à une fonction, par ex.MySQL - passe le champ de la base de données via la fonction PHP avant de renvoyer le résultat

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

Ensuite, au lieu de print_r ($ result) Je retourneraient ($ result). De cette façon, je peux changer de façon dynamique la valeur de $ val
Le code 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); 

Est-ce que ce travail, comment pourrais-je faire cela?
Merci à tous ...

Répondre

1

Vous pouvez utiliser un UDF (fonction définie par l'utilisateur) pour traiter les données du côté MySQL des choses avant qu'elles ne retournent à PHP.

0

C'est une méthode parfaitement valide, bien que je soupçonne que votre exemple de code d'implémentation ne fonctionnera pas tout à fait. Il vaut probablement mieux aller chercher un objet mysqli_result, en appelant le fetch_assoc, et en poussant le tableau associatif résultant sur votre jeu de résultats plutôt que de créer vous-même le tableau associatif.

+0

Merci Kalium, vous avez dit "pousser le tableau associatif résultant sur votre jeu de résultats" ... pouvez-vous fournir un exemple de code de pousser un tableau assoc sur un ensemble de résultats. Donc j'utiliserais mysqli_result :: fetch_assoc() pour obtenir chaque ligne? puis effectuer la fonction sur la ligne? comment repousser la ligne sur le jeu de résultats? – undefined

+0

Puis-je faire cela en utilisant mysql - J'ai MySQL version 5.0.22. Les commandes mysqli retournent des erreurs - par exemple "Appel à une fonction non définie mysqli_connect()" – undefined

+0

C'est parce que vous n'avez apparemment pas installé l'extension mysqli. Vous pouvez pousser le tableau associatif dans votre ensemble de résultats comme ceci: $ results [] = $ associativeArray; – Kalium

Questions connexes