2009-04-03 10 views
0

http://php.morva.net/manual/en/mysqli-stmt.bind-result.phpの次のコードは、mysqliクエリが準備されて実行されていることを示しています。 while($ stmt-> fetch())ループは結果リソースを生成しているように見えます。これを変更して関数への呼び出しを含めることはできますか?MySQL - 結果を返す前にPHP関数を通してデータベースフィールドを渡す

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

次に、print_r($ result)の代わりに($ result)を返します。私は動的に$ valの
元のコードの値を変更することができますこの方法=

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

この作品、私はこれをどのように他を行うことができますか?
ありがとうございました...

答えて

1

PHPに戻す前に、MySQL側のデータを処理するためにUDF(User Defined Function)を使用することができます。

0

サンプル実装のコードがうまくいかないとは思いますが、これは完全に有効な方法です。おそらく、mysqli_resultオブジェクトをフェッチし、fetch_assocを呼び出して、結果の連想配列を結果セットにプッシュする方がよいでしょう。

+0

ありがとうございましたKaliumは、結果の連想配列を結果セットにプッシュすると言っています... assoc配列を結果セットにプッシュするサンプルコードを提供できますか?だから、私はmysqli_result :: fetch_assoc()を使用して各行を取得しますか?行の関数を実行する?結果セットに行を戻すにはどうしたらいいですか? – undefined

+0

mysqlを使ってこれを行うことはできますか?私はMySQLバージョン5.0.22を持っています。 mysqliコマンドがエラーを返しています - たとえば、 "未定義関数mysqli_connect()"を呼び出してください。 – undefined

+0

これは明らかにmysqli拡張がインストールされていないためです。連想配列を次のように結果セットにプッシュできます:$ results [] = $ associativeArray; – Kalium

関連する問題