我正在编写一个sql编辑器(sqlite3)。
我可以显示一个表并允许用户编辑表中的任何值,但我现在需要某种方法来识别编辑的值。问题是我不知道主键是什么,我不认为这是一个好主意说“更新表设置a = b其中x = 123和y = 123和z = 123和... “对于所有不是”a“的字段。
我正在使用jquery(和ajax)和php。
有什么想法吗?
答案 0 :(得分:1)
如果您不知道主键是什么(或者您不知道是否有UNIQUE
索引),那么您将无法做出多少选择:即使使用where
子句中的所有字段,您也可以更新多行(用户想要编辑的行)。
你真的需要一些方法来识别一条精确的线 - 这就是主键。
也许,出于好奇,你检查phpMyAdmin是如何做到的?
(我知道这不是SQLIte,我的MySQL - 但也许可以重用一般的想法?)
答案 1 :(得分:0)
您可以强制用户指定主键(或至少是UNIQUE),然后使用SHOW INDEX FROM table
(http://dev.mysql.com/doc/refman/5.0/en/show-index.html)
答案 2 :(得分:0)
如果您无法确定PK或UK列,那么您必须使用“其中x = 123且y = 123且z = 123”,但请记住添加LIMIT 1 - 然后您确定不要编辑多个记录。
答案 3 :(得分:0)
对于所有不是'的字段,发布更新'...确实不是一个好主意。您还应该包含一个,以及已编辑的行中的旧值。