2009-04-03 2 views
0

Der folgende Code aus http://php.morva.net/manual/en/mysqli-stmt.bind-result.php zeigt eine MySQL-Abfrage, die vorbereitet und ausgeführt wird. while ($ stmt-> fetch()) Schleife sieht so aus, als würde sie die Ergebnisressource erzeugen. Kann ich dies ändern, um einen Anruf zu einer Funktion z.MySQL - Datenbankfeld durch PHP-Funktion übergeben, bevor das Ergebnis zurückgegeben wird

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

Dann anstelle von print_r ($ Ergebnis) würde ich zurück ($ Ergebnis). So kann ich den Wert von $ val dynamisch Der ursprüngliche Code
ändern =

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); 

Würde dieser Arbeit, wie sonst könnte ich das tun?
Danke allen ...

Antwort

1

Sie könnten eine UDF (User Defined Function) verwenden, um die Daten auf der MySQL-Seite der Dinge zu verarbeiten, bevor sie jemals wieder in PHP zurückkehrt.

0

Das ist eine vollkommen gültige Methode, obwohl ich vermute, dass Ihre Beispiel-Implementierung Code nicht ganz funktioniert. Wahrscheinlich ist es besser, ein mysqli_result-Objekt zu holen, das fetch_assoc darauf aufruft und das resultierende assoziative Array auf die Ergebnismenge drückt, um das assoziative Array selbst zu erstellen.

+0

Dank Kalium, du hast gesagt "schieb das resultierende assoziative Array auf deine Ergebnismenge" ... kannst du einen Beispielcode bereitstellen, um ein assoziatives Array auf eine Ergebnismenge zu schieben. Also würde ich mysqli_result :: fetch_assoc() verwenden, um jede Zeile zu bekommen? dann Funktion in Zeile ausführen? Wie schiebe ich die Reihe zurück in die Ergebnismenge? – undefined

+0

Kann ich dies mit mysql tun - ich habe MySQL Version 5.0.22. mysqli-Befehle geben Fehler zurück - zB "Call to undefined function mysqli_connect()" – undefined

+0

Das liegt daran, dass Sie anscheinend nicht die mysqli-Erweiterung installiert haben. Sie können das assoziative Array wie folgt in Ihre Ergebnismenge einfügen: $ results [] = $ associativeArray; – Kalium

Verwandte Themen