Обновите строку таблицы базы данных с данными отправки и установите для новых значений значение NULL, если они пусты.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Обновите строку таблицы базы данных с данными отправки и установите для новых значений значение NULL, если они пусты.

Сообщение Anonymous »

У меня есть форма, и я использую ее для обновления профиля пользователя. Проблема в том, что я не хочу делать все поля обязательными, поэтому, если пользователь оставляет пустое поле, значение, уже хранящееся в базе данных, обновляется пустым или нулевым значением. Поэтому я решил запросить базу данных и получить уже сохраненный массив значений, а затем получить массив значений из пользовательской формы. Мне нужно объединить два массива таким образом, чтобы можно было обновить поле базы данных, если в форму было вставлено новое значение, и сохранить старое значение базы данных, если поле формы пусто.
Я знаю, что мог бы сделать что-то вроде следующего, не используя массивы, но я не знаю, как использовать подготовленный оператор в этом случае

Код: Выделить всё

if (!empty($user_last)) {
$update_values[] = "user_last='".$user_last."'";
}
$update_values_imploded = implode(', ', $update_values);

if (!empty($update_values)) {
$q = "UPDATE users SET $update_values_imploded WHERE user_id='$userid' ";
$r = mysqli_query($conn,$q);

if ($r) {
$_SESSION['success_msg'] = 'profile updated!';
header("location: ../client_profile.php");
exit();
}
}
Я пробовал следующий метод массива, но он не работает должным образом.

Код: Выделить всё

$merged_array = array_unique(array_merge($database_rows, $form_data));
У вас есть еще идеи? Большое спасибо
Это полный код с симуляцией массива from

Код: Выделить всё

$km_user_id = 2;

// this array comes from the form
$from_array = array(
'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' => ''
);

// select vakues from database

$query= "SELECT km_user_first_name, km_user_last_name, km_user_address, km_user_city, km_user_city_prov, km_user_postcode, km_user_email, km_user_website, km_user_telephone, 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 FROM km_users WHERE km_user_id= ?";
$stmt = mysqli_prepare($db_user_conn, $query);
mysqli_stmt_bind_param($stmt, 'i', $km_user_id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
print_r($row);
?>





Подробнее здесь: [url]https://stackoverflow.com/questions/54270889/update-database-table-row-with-submission-data-and-set-new-values-to-null-if-emp[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»