2015-03-24 26 views
0

我有一個名爲chapters的表的MySQL數據庫。如何增加MySQL數據庫的行值

我有一個名爲chapter_number的列,它是一個Integer數據類型,不是自動增量,因爲我有另一個唯一標識該行的字段。

插入此表後,我想chapter_number列的值爲前一行的chapter_number加1(+1)。

這樣做的目的是爲了確保每次添加章節時都會發生正確的排序。

我怎麼能在PHP中實現這一點?

這是我的意思嗎?

表結構:

enter image description here

$stmt = $db->prepare('INSERT INTO chapters VALUES (?,?,?,?)'); 
$stmt->execute(array('','title', '2015-04-03', 'chapter 1 body')); 

我把什麼作爲第一個參數^

+2

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html INSERT INTO table(a,b, c)VALUES(1,2,3) 重複鍵更新c = c + 1; 更新表SET c = c + 1 WHERE a = 1;'根據您的*「**將**插入到此表中」* – 2015-03-24 21:12:36

+0

如果刪除一行,該行的id不能重複使用,直到表被重置?因此,如果刪除第2行然後插入新行,則id的自動增量將在第2行中存儲chapter_id = 4。 – 2015-03-24 21:13:13

+0

*「我已經找到了一種重新排序行的方法, 「* - 我不會發布我的第一個鏈接評論。 INSERT和UPDATE是兩種不同的動物*。 ;-) – 2015-03-24 21:16:22

回答

0
SELECT max(chapter_number) + 1 as total FROM table; 

這也將讓你通過以後必須分配給多本書籍章節正確地加入where子句

以下示例是該語法的外觀

insert into table_one (greeting_column, name_column) 
SELECT 
    'hello', 
    (SELECT max(chapter_number) + 1 as total FROM table) 
+0

這是選擇不插入。不回答問題 – user3574492 2015-03-24 21:55:30

+1

它確實回答了問題。提供的查詢可以作爲子查詢運行以實現正確的結果。 – mopsyd 2015-03-24 22:55:23