<?php
$_POST = [
'km_user_id' => '2',
'km_user_first_name' => 'Antonio',
'km_user_last_name' => 'Acri',
'km_user_address' => 'via pola',
'km_user_city' => 'roma',
'km_user_city_prov' => '',
'km_user_postcode' => '',
'km_user_email' => '',
'km_user_website' => 'url',
'km_user_telephone' => '123456',
'km_user_mobile' => '',
'km_user_fiscalcode' => '',
'km_user_document' => '',
'km_user_document_number' => '',
'km_user_document_exp' => '',
'km_user_birth_place' => '',
'km_user_birth_date' => ''
];
// use mb_trim() when PHP version allows
$editableUserColumns = [
'km_user_first_name' => 'trim',
'km_user_last_name' => 'trim',
'km_user_address' => 'trim',
'km_user_city' => 'trim',
'km_user_city_prov' => 'trim',
'km_user_postcode' => 'trim',
'km_user_email' => 'trim',
'km_user_website' => 'trim',
'km_user_telephone' => 'trim',
'km_user_mobile' => 'trim',
'km_user_fiscalcode' => 'trim',
'km_user_document' => 'trim',
'km_user_document_number' => 'trim',
'km_user_document_exp' => 'trim',
'km_user_birth_place' => 'trim',
'km_user_birth_date' => 'trim'
];
if (empty($_POST['km_user_id'])) {
exit('Invalid/Missing data');
}
$sets = [];
$vals = [];
foreach ($editableUserColumns as $col => $func) {
$sets[] = "$col = NULLIF(?, '')";
$vals[] = $func($_POST[$col] ?? '');
}
$sql = sprintf(
'UPDATE users SET %s WHERE km_user_id = ?',
implode(', ', $sets)
);
$vals[] = $_POST['km_user_id'];
$mysqli->execute_query($sql, $vals);
echo 'Affected rows: ' . $mysqli->affected_rows;
echo "\n";
var_export(
$mysqli->query('SELECT * FROM users')->fetch_all(MYSQLI_ASSOC)
);