PHP: Создать SQL-запрос для доступной переменной $ _POST

У меня есть переменная $ _POST:

Array ( [phone_1] => 3123213 [phone_2] => 432423 [phone_3] => 4234 [phone_4] => 6456456 [phone_5] => 7567576 [phone_6] => ) 

Теперь у меня есть этот оператор SQL:

 UPDATE table_name SET phone_1 = $_POST['phone1'], phone_2 = $_POST['phone2'], phone_3 = $_POST['phone3'], phone_4 = $_POST['phone4'], phone_5 = $_POST['phone5'], phone_6 = $_POST['phone6'] WHERE id=$id 

Я хочу добиться динамического построения SQL-запроса на основе переменной $ _POST и включать только те, которые имеют значение post. Таким образом, оператор SQL должен быть:

 UPDATE table_name SET phone_1 = $_POST['phone1'], phone_2 = $_POST['phone2'], phone_3 = $_POST['phone3'], phone_4 = $_POST['phone4'], phone_5 = $_POST['phone5'] 

потому что переменная сообщения phone_6 пуста. И да, имена ключей $ _POST совпадают с именами полей таблицы. ТИА!

Solutions Collecting From Web of "PHP: Создать SQL-запрос для доступной переменной $ _POST"

вы можете использовать это:

 <?php $update = ""; foreach($_POST as $key => $value) { if(!empty($value)) { $update .= $key. "='".$value."',"; } } $update = substr($update,0,-1); $query = "UPDATE table_name SET ".$update." WHERE id=$id"; ?> 
 $postVar = array_filter($_POST); $update = implode(', ', array_map(function($v, $k) { return $k."='".$v."'"; }, $postVar, array_keys($postVar))); $query = "UPDATE table_name SET ".$update." WHERE id=$id"; 

это также было бы лучшим подходом, избегая цикла, используя array_map и array_map http://php.net/manual/en/function.array-map.php