1

これらすべてがすでに提供されているとしましょう。

  • テーブルの名前
  • テーブル内の列の名前を含む配列
  • テーブルに挿入する値とそれらの値の型を含む対応する配列。

私は通常、このようなクエリを実行します

$stmt = mysqli_stmt_init($mysqli);
if (mysqli_stmt_prepare($stmt, 'INSERT INTO `Table` (columns) VALUES (values) ')) {
  mysqli_stmt_bind_param($stmt, /* types */, /* values */);
  mysqli_stmt_execute($stmt);
  mysqli_stmt_close($stmt);
}

しかし、これをより一般的なものにして、列名、値、および型を入力してクエリを実行できるようにする方法がわかりません。

これを行う最善の方法は何ですか?この目的のためにライブラリをインストールする必要はありません。

4

1 に答える 1

5

列名についてimplodeは、列配列とsprintfクエリを実行するだけです。

タイプについては、implodeそれらを文字列にして にフィードすることもできますmysqli_stmt_bind_param

値については、いくつかのトリッキーな操作を行う必要があります ( を使用call_user_func_array):

$args = array(); // to be put into call_user_func_array

$args[] =& $stmt; // because the statement HAS TO be by reference.
$args[] = implode("", $types);

foreach($values as $value){
    $args[] = $value;
}

call_user_func_array("mysqli_stmt_bind_param", $args);
于 2012-06-15T13:59:16.533 に答える