У меня есть «матрица» таблицу со следующими столбцами заполненными.Можно ли прокручивать строки таблицы mysql и проверять столбцы?
matrix_id, user_id, position_1, position_2, position_3
1 1 1982 2251 5841
2 2 6204 0 0
3 3 0 0 0
4 4 0 0 0
Я в принципе хочу сделать следующее.
- Найти строку с наименьшим user_id и иметь пустую позицию.
- В приведенном выше примере это будет user_id 2 и position_2.
- Я обновляю строку с запросом.
- Затем я перехожу к следующей следующей пустой позиции. Поскольку user_id 2 все еще имеет пустую позицию_3, я снова обновляю строку запросом.
- Поскольку эта строка завершена, я перехожу к следующему наивысшему user_Id, который имеет пустые позиции. В этом случае это user_id 3, а затем user_id 4 после этого.
Я знаю, что могу сделать все вышеописанное, если знаю, что такое user_id. Но предположим, что в этом случае я не знаю, что такое user_id. Как тогда будут выглядеть запросы?
Вот что у меня есть.
$find_user = $db->prepare("SELECT * FROM matrix WHERE user_id > :user_id");
$find_user->bindValue(':user_id', 0);
$find_user->execute();
$result_user = $find_user->fetchAll(PDO::FETCH_ASSOC);
if(count($result_user) > 0) {
foreach($result_user as $row) {
$matrix_id = $row['matrix_id'];
$user_id = $row['user_id'];
$position_1 = $row['position_1'];
$position_2 = $row['position_2'];
$position_3 = $row['position_3'];
}
} else {
$errors[] = 'User Id not found in Matrix.';
}
$update_user = $db->prepare("UPDATE matrix SET position_2 = :position_2 WHERE user_id = :user_id");
$update_user->bindValue(':position_2', 1564;
$update_user->bindParam(':user_id', $user_id);
if($update_user->execute()) {}
Что вы считаете EMPTY быть? '' '' или 'NULL' или что еще? – RiggsFolly
Я считаю, что пустым является «0». Вот как выглядит таблица. Все пустые позиции отображаются автоматически как 0. Я должен обновить свою оригинальную таблицу, чтобы это не сбивало с толку. – tom
Сделать все новые значения равными '1564' – RiggsFolly