2012-04-06 10 views
1

変数のリストを使用してステートメントを2つ表示しているので、常にデータベースに別のカラムを追加しているように見えるので、変数のリストを作成して、それは一度私は半ダースの代わりにする必要がある場合。複数の変数を一つにまとめて

$stmt = $mysql->prepare("SELECT * FROM table WHERE id =? LIMIT 1"); 

$stmt -> bind_param('i', $id); 

$stmt->execute(); 

$stmt->bind_result($a, $b, $c, $d, $e, $f, $g); 

$stmt->fetch(); 

$stmt->close(); 

しかし、私はこのような何かしたい:あなたは何ができるか

varList="$a, $b, $c, $d, $e, $f, $g"; 

    $stmt = $mysql->prepare("SELECT * FROM table WHERE id =? LIMIT 1"); 

$stmt -> bind_param('i', $id); 

$stmt->execute(); 

$stmt->bind_result($varList); 

$stmt->fetch(); 

$stmt->close(); 
+0

あなたがあればチェックしていますbind_result()も配列を受け入れることができますか?もしそうなら、すべてのvarsを含む配列を使用してください。 – Kristian

+0

Kristianに感謝します。しかし、配列に入れようとしましたが、配列を受け入れるように見えません。私は "変数のdoesnt一致数"エラーを取得します。 –

答えて

1

は(変数への参照の)配列を作成し、その後、bind_resultを呼び出すためにcall_user_func_arrayを使用しています。

例:この答えオフに基づいて

$varList = array(&$a, &$b, &$c, &$d, &$e, &$f, &$g); // variable references 

call_user_func_array(array($stmt, 'bind_result'), $varList); 

$varList = array('a', 'b', 'c', 'd', 'e', 'f', 'g'); // variable names. 
$params = array(); // list of params 

foreach($varList as $v){ 
    $params[] = &$$v; // store a reference to the vars in $params 
} 

call_user_func_array(array($stmt, 'bind_result'), $params); 

あなたはforeachループは、あなたもこれを行うことができることを必要としないことがありhttps://stackoverflow.com/a/966717/206403

関連する問題