1

したがって、変数のリストを使用していくつかのステートメントを取得しましたが、常にデータベースに別の列を追加しているように見えるので、変数のリストを1つ作成してそれを何らかの形で含めたいので、必要に応じて1回変更するだけで済みます。半ダース回。

    $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(); 
4

1 に答える 1

1

できることは、(変数への参照の) 配列を作成し、それを使用call_user_func_arrayして を呼び出すことbind_resultです。

例:

$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、これを行うこともできます:

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

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

この回答に基づく: https://stackoverflow.com/a/966717/206403

于 2012-04-06T19:58:16.947 に答える