我有一个名为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();
}
答案 0 :(得分:1)
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();
}
答案 1 :(得分:1)
尝试此查询
"INSERT INTO $table (title, content, sort) VALUES ($title, $content,(SELECT MAX(sort)+1 FROM $table))"
答案 2 :(得分:1)
您可以通过添加一个值来重新检索最后一个值和sotre。
$ query = SELECT #pragma message("MYMACRO == " MYMACRO) // will print project dir during compilation
std::cout << MYMACRO << std::endl; //will print project dir at run time
,user_id
来自value
ORDER BY My_TABLE
DESC
限制1;
答案 3 :(得分:0)
我很好奇你使用的是什么。您可以按现有ID排序以对行进行排序。正如你所说的那样,该列已经自动增量。让另一列重复已经可用的通常是糟糕的数据库设计。也许我还没有完全理解你想要做什么,你能不能再解释一下你要用sort列完成什么?
如果您按照指定的方式进行设置,则必须按列排序降序进行查询和排序。
按排序desc从$ table order中进行SELECT排序。然后取该值加一,然后将值插入新值。