在插入我赶上了唯一约束mysql_errno()1062PHP MySQL的INSERT失败,因为唯一约束
这工作得很好,但我想找到现有的行复权或修改。
是否有方法可以在插入失败时获取行ID?我试过mysql_insert_id()但意识到只会返回我插入的行(或插入失败),因此,我得到0.
是否有没有选择,只能发出另一个mysql_query,只需执行select值?
我只是想确保没有更好,更快,更经济的方法来做到这一点。
在插入我赶上了唯一约束mysql_errno()1062PHP MySQL的INSERT失败,因为唯一约束
这工作得很好,但我想找到现有的行复权或修改。
是否有方法可以在插入失败时获取行ID?我试过mysql_insert_id()但意识到只会返回我插入的行(或插入失败),因此,我得到0.
是否有没有选择,只能发出另一个mysql_query,只需执行select值?
我只是想确保没有更好,更快,更经济的方法来做到这一点。
如果您正试图插入行,如果新的或更新现有的值,然后REPLACE INTO是你需要的。如果存在约束,则考虑INSERT ... ON DUPLICATE KEY UPDATE Syntax,因为REPLACE INTO将DELETE,然后INSERT。
不替换删除现有的行吗?我想在覆盖之前看到该行和内容,或者至少让用户选择修改它。 – sjw 2010-05-03 05:05:39
它确实 - 如果你需要检索行,如果它已经存在,那么除了使用SELECT语句之外,我不会看到其他任何选项。 – 2010-05-03 05:07:36
您必须检查表中是否存在任何“唯一”键(SHOW CREATE TABLE
会将它们全部列出),然后在您尝试的插入查询中查询表中的关联值。所以,如果你要插入域A,B,C,d和B,C对他们的唯一键,则:
SELECT id, B, C FROM table WHERE B=$B and C=$C;
除了首先选择其他方式。 – 2010-05-03 05:16:16