Проверьте, какие столбцы были изменены в запросе UPDATE - PullRequest
0 голосов
/ 01 сентября 2018

Когда мы обновляем запись MySQL с помощью php, мы можем проверить, имеет ли она эффект, используя:

$mysqli->affected_rows;

Но как мне проверить, какой столбец был изменен?

Пример, в моей таблице есть столбцы: id / name / age

В записи у нас есть данные: 1 / Woton / 18

Если я отправлю: UPDATE mytable SET name = 'Woton', age = '20' WHERE id = '1'

Изменилось только поле age . Как я могу это определить?

1 Ответ

0 голосов
/ 01 сентября 2018

Вы не можете напрямую получить обновленные столбцы из результата запроса.

Это можно получить из некоторого php-запроса. Сначала нам нужно выбрать строку из базы данных, которую мы собираемся обновить, в переменной массива. Чем выполнить запрос на обновление для той же строки.

Наконец получить ту же строку из базы данных из запроса выбора в новой переменной массива.

Наконец мы получаем два массива.

Мы можем получить обновленный столбец с помощью функции array_diff_assoc php.

См. Ниже код для того же.

$sql = "SELECT *  from mytable where id=1 limit 1";
$prev = mysqli_fetch_assoc(mysqli_query($conn, $sql));

//Get the column data in the array. Before update.

$sql = "UPDATE mytable SET name = 'Woton', age = '20' WHERE id = '1'";
$conn->query($sql);

// Update data 

$sql = "SELECT *  from mytable where id=1 limit 1";
$updated = mysqli_fetch_assoc(mysqli_query($conn, $sql));

// Again run the select command to get updated data.

$UpdatedColumns=array_diff_assoc($updated,$prev);
...