1

15個の値の配列があり、すべてをテーブルに挿入する必要があります。そして、私はちょうどこのようなものがあるかどうか疑問に思っていました:

INSERT INTO table VALUES($myarrayofvalues)

ただ好奇心が強い、非常に便利だろう。

更新:
15列の1行のみ。

4

2 に答える 2

3
$query = "INSERT INTO table VALUES('" . implode("', '", $myarrayofvalues) . "')";

編集

まだエスケープを行っていない場合は、上記のステートメントの前の小さなループで、次のように行うことができます。

foreach($myarrayofvalues as $k=>$v)
    $myarrayofvalues[$k] = mysql_real_escape_string($v);
于 2012-04-05T02:36:17.277 に答える
0

Rickの回答に示されていることを実行できますが、SQLインジェクションを受け入れることができます。

ある種の列マッピングなしでこれを行う良い方法は本当にありません。これは、要素1が文字列、要素2が整数であることを示すものです。

そのため、2つの選択肢があります。

  1. すべてをエスケープする

    $values = array();
    foreach ($myarrayofvalues as $value) {
      $column[] .= "'" . mysql_real_escape_string($value) . "'";
    }
    $sql = "INSERT INTO table VALUES(" . implode(',', $values) . ")";
    
  2. 完全なSQLステートメントを記述します

    $sql = "INSERT INTO table (column1_string, column2_int, ...)
      VALUES ('" . mysql_real_escape_string($myarray[0]) . "', " . (int)$myarray[1] . ", ...)
    

読みやすく、もろくないので、私は#2を好みます。現在、スキーマまたは配列が変更されると、コードが壊れます。

于 2012-04-05T02:41:31.820 に答える