-1

MySQL データベースに挿入したい約 10 個のフォーム項目があり、フォームの各入力には、テーブルの行名でもある名前があります。ここで私がやろうとしていることのアイデアを得ることができます:

foreach($_POST as $x=>$y) {

    if(!empty($y)) {

            $sql = "INSERT INTO db.table (`$x`) values ('$y');";
            // execute
        }
}

...私の問題は、すべてを同じレコードに入れる必要があることです。現在、各 'INSERT' は完全に新しいレコードに追加されています。最初の 'INSERT' のレコードの ID を取得し、そこから 'Update' を使用することは可能でしょうか? または、これよりも良い方法はありますか?

ありがとう

4

2 に答える 2

1

この関数を確認してください: mysqli::insert_id
最初のクエリを として実行し、insertその関数で生成された ID を取得してから、updateクエリを実行できます。

于 2013-10-14T14:51:55.590 に答える
1

まず第一に、@andy によって指摘された MySQL インジェクションについて何かを行う必要があります。この時点で更新する必要はありません。

$columns = '';
$values = '';
$sql = "INSERT INTO db.table (%s) values (%s);";

foreach($_POST as $x=>$y) {
    if(!empty($y)) {
        $columns .= $x.',';
        $values .= $y.',';
    }
}

$columns = substr($columns,0,strlen($columns)-1));
$values = substr($values,0,strlen($values)-1));

$sql = sprintf($sql, $columns, $values);
//execute
于 2013-10-14T15:03:27.227 に答える