2013-01-13 39 views
1

我有一個html/javascript頁面,它創建一些類似於圖形的數據,它是一個不同類型的節點數組,具有不同的屬性,包括節點之間的多個交叉引用,有時還需要將文本存儲在單獨的表格中,因爲它可能會翻譯成其他語言。在一步之中插入mysql複雜數據

一個JSON字符串化可能是這樣的:

[{"type":"bid-rama","parent":-1,"child":1,"color":"silver","state":{"bid":[0,0,1],"length":3,"turn":"lho","main":{"s":"a83","h":"kq84","d":"jt52","c":"94"},"rho":{"s":"kj92","h":"j3","d":"q93","c":"qj83"},"lho":{"s":"t7","h":"9765","d":"k87","c":"at76"},"cho":{"s":"q654","h":"at2","d":"a64","c":"k52"}}},{"type":"bid-nodo","parents":[0],"fila":2,"children":{"0":2,"-1":4,"5":6},"options":{"0":"mog","-1":"mop","5":"mor","4":"blue","7":"red"},"texts":{"blue":"texto axu","red":"testo roho"},"state":{"bid":[0,0,1],"turn":"main"}},{"type":"bid-rama","parent":1,"child":3,"color":"green","state":{"bid":[0,0,1,0],"length":0,"turn":"lho"}},{"type":"bid-nodo","parent":2,"fila":3},{"type":"bid-rama","parent":1,"child":5,"color":"purple","state":{"bid":[0,0,1,-1],"length":0,"turn":"lho"},"texts":{"0":"blalb","1":"hrhrhr ","2":"meee[r][s] fas","3":"[10] is 10 [d] no"}},{"type":"red-dot","parent":4,"fila":3},{"type":"bid-rama","parent":1,"child":7,"color":"green","state":{"bid":[0,0,1,5,0,0,0],"length":0,"turn":"lho"}},{"type":"bid-ctr","parent":6,"fila":3,"state":{"bid":[0,0,1,5,0,0,0],"contract":5,"declarer":"south"},"color":"yellow","playnode":8},{"type":"cpl-ctr","parents":[7],"fila":1,"trump":"n","declarer":"main","color":"yellow","child":9,"state":{"main":{"s":"a83","h":"kq84","d":"jt52","c":"94"},"rho":{"s":"kj92","h":"j3","d":"q93","c":"qj83"},"lho":{"s":"t7","h":"9765","d":"k87","c":"at76"},"cho":{"s":"q654","h":"at2","d":"a64","c":"k52"},"turno":"lho","trick":"","history":"","trNS":0,"trEW":0}},{"type":"cpl-rama","parent":8,"child":10,"fila":2,"color":"yellow","state":{"main":{"s":"a83","h":"kq84","d":"jt52","c":"94"},"rho":{"s":"kj92","h":"j3","d":"q93","c":"qj83"},"lho":{"s":"t7","h":"9765","d":"k87","c":"at76"},"cho":{"s":"q654","h":"at2","d":"a64","c":"k52"},"turno":"lho","trick":"","history":"c6c2cqc4c3c9ca","trNS":0,"trEW":0}},{"type":"red-dot","parent":9,"fila":2}] 

我用ajax存儲寄這封信給PHP頁面。

到目前爲止,我只發基本的MySQL查詢,如插入用戶名,密碼等

但現在它看起來像我要插入的東西在一個表,然後看看另一個,插入來自以前的寄存器IDS在這裏,以及這幾次等等。

我很擔心在插入的中間發生不好的事情而導致我的數據庫中存在不一致的數據,我記得我被告知應該在一個單獨的步驟中完成,以避免,但我想不出辦法做到這一點。

+0

閱讀關於MySQL的交易。 http://www.mysqltutorial.org/mysql-transaction.aspx – ethrbunny

回答

1

我困擾關於離開我的數據不一致的數據庫中插入中間壞事發生,我記得我當時taugth,這應該在一個單一步驟中進行,以避免這一點,但我想不出一種方法來做到這一點。

您需要在「交易」中完成所有操作。 使用InnoDB表類型,並研究交易。 這不是火箭科學,但需要一些理論。

http://www.mysqltutorial.org/mysql-transaction.aspx 然後http://dev.mysql.com/doc/refman/5.1/en/ansi-diff-transactions.html