2008年8月 5日

[PHP-users 33937] Re:mysqli_stmt_bind_param の使い方

こんばんは。yktです。

 配列を使用して引数を可変長で呼び出すのであれば、call_user_func_arrayを使うことで解決できませんか?
http://jp2.php.net/call_user_func_array

 私の場合は、例示されたコードから実装すると以下のようになります。

// 'カラム名' => '値'

$data = array(
'v1' => 'hoge',
'v2' => 'huga',
'v3' => 'piyo',
);
// データの件数
$count = count($data);
// 動的にSQL文を作成
$stmt = $mysqli->prepare( "INSERT INTO test_tbl( " . implode(', ', array_keys($data)) . " ) VALUES ( " . implode(', ', array_fill(0, $count, '?')) . " )" );
// 仮にすべて文字列と仮定した
$funcParams = array(str_repeat('s', $count));
$funcParams = array_merge($funcParams, array_values($data));
call_user_func_array(array($stmt, 'bind_param'), $funcParams);

 若干やりすぎ感もありますが、あくまで一例としてご覧下さい。
なお動かしてません。
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2008年8月 5日 23:02
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75972
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。