У меня есть столбец таблицы с именем sort
который используется для сортировки строк (1 2 3 … и т. д.).
Когда я вставляю новую строку, как я могу автоматически добавить приращение +1
в этой колонке?
Например, если значение последней строки равно 20, новым должно быть 21.
Я попытался установить этот столбец как автоинкремент, но phpMyAdmin говорит, что только один столбец может быть auto
(id
в моем случае).
Другое решение было бы вставить новую строку в качестве первой строки со значением 1
в столбце сортировки, но как я мог в этом случае изменить все другие значения ниже?
Любая помощь?
try {
$stmt = $db->prepare('INSERT INTO ' . $table. ' (title, content, sort) VALUES (:title, :content, :sort)') ;
$stmt->execute(array(
':title' => $title,
':content' => $content,
':sort' => ???,
));
header('Location:admin.php');
exit;
} catch(PDOException $e) {
echo $e->getMessage();
}
Попробуйте этот запрос
"INSERT INTO $table (title, content, sort) VALUES ($title, $content,(SELECT MAX(sort)+1 FROM $table))"
try {
$stmt = $db->prepare('INSERT INTO ' . $table. ' (title, content, sort) VALUES (:title, :content, :sort)') ;
$stmt->execute(array(
':title' => $title,
':content' => $content,
':sort' => $sort+1
));
header('Location:admin.php');
exit;
} catch(PDOException $e) {
echo $e->getMessage();
}
Вы можете получить последнее значение и получить это значение, добавив его.
$ Запрос = ВЫБОР user_id
, value
ОТ My_TABLE
СОРТИРОВАТЬ ПО user_id
DESC
LIMIT 1;
Мне интересно, что вы используете для сортировки. Вы можете просто заказать существующий идентификатор для сортировки строк. Так как этот столбец уже автоматически увеличивается, как вы сказали. Наличие повторяющегося столбца в том, что уже доступно, обычно является плохим дизайном базы данных. Может быть, я не совсем понимаю, что вы пытаетесь сделать, не могли бы вы дать немного больше объяснений относительно того, что вы пытаетесь достичь с помощью столбца сортировки?
Если вы настроили настройку так, как вы указали, то, что вам нужно сделать, это сделать запрос и порядок по сортировке столбца по убыванию.
ВЫБЕРИТЕ сортировку из $ table order by sort desc. затем возьмите это значение, добавьте одно, затем вставьте значение в новое.