0

フォームで送信されたすべての入力データを取得するコードがあります。フォームに 2 つのフィールドしか入力されていない場合、PHP はそれら 2 つのフィールドの値のみを取得します (フォーム内の変更されていないフィールドは送信されません)。

次に、PHP コードで取得したフィールドの SQL テーブルを UPDATE したいと思います。ここで迷ってしまいます。フォームから受け取ったフィールドのみを SQL で指定する必要がありますが、これは可変です。たぶん、1 つのフィールドだけを受け取ったのかもしれませんし、7 つのフィールドを受け取ったのかもしれません...

これが私のコードです:

if (isset($_POST) && !empty($_POST))  {
echo $internalImage;

foreach ($_POST as $key => $value) 
    {
 echo "Field Name: ".htmlspecialchars($key)." | Value: ".htmlspecialchars($value)."<br>";
    }
}

何を提案しますか?

4

1 に答える 1

0

次のようにクエリを作成できます。

$values=array();

//this will be an array of possible fields that are in your table
$possible=array('field1', 'field2', 'field3');

$i=0;
$len=count($_POST);
$query='update table_name set ';
foreach($_POST as $key => $value){
  $k=htmlspecialchars($key);
  $v=htmlspecialchars($value);
  if(in_array($k, $possible)){
    $query .= $k .' = ?'; //placeholder for a value
    $values[]=$v;  //append values to an array for later use
    if($i < ($len-1)) $query .= ', ';
    $i++;
  }
}
$query .= 'where table_id = ?';
$values[]=$table_id; //forgot that, append id of a row you are to update.

次に、クエリを準備して実行します。

$db->prepare($query);
$db->execute($query, $values);
于 2013-02-28T22:37:27.893 に答える