@ KetanYekale правильно, что вам нужно отфильтровать $ _POST для известных имен столбцов.
Вот альтернативный способ сделать это, используя некоторые встроенные функции PHP.
$request_columns = array('column1','column2');// all the columns of request table
# get a subset of $_POST, only those that have keys matching the known request columns
$post_only_columns = array_intersect_key(
$_POST,
array_flip($request_column)
);
# make sure columns are delimited like `name` in case they are SQL reserved words
$columns = implode(array_map(function ($col) { return "`$col`"; }, array_keys($post_only_columns), ', ';
# use ? positional holders, not named holders. it's easier in this case
$holders = implode(array_fill(1, count($post_only_columns), '?'), ', ');
$sql = "INSERT INTO request ($columns) VALUES ($holders)";
$stmt => $this->pdo->prepare($sql);
# no need to bindValue() or use a loop, just pass the values to execute()
$stmt->execute( array_values($post_only_columns) );
PHP имеет множество функций Array , которые вы можете использовать в различных сценариях, чтобы сделать ваш код быстрее и лаконичнее. Вы можете использовать эти функции, чтобы избежать написания некоторых типов кодов foreach
.