我的表包含id和group。
id group
1 alpha
2 beta
3 omega我的验证代码是:
$validate_query = "SELECT * FROM table_test WHERE id = '{$id}' ";
$rs = mysql_query($validate_query,$connection);
if(mysql_num_rows($rs) != 0) {
echo "<span class='confirmation'>Oops! Data exist. Try another one.</span>";
}
else {
$query = "UPDATE table_test SET
group= '{$group}'
WHERE id = '{$id}'
";
$result = mysql_query($query, $connection); 但我的目标是这样..。
**example:**
if the user want to edit the field group value(ex. alpha) into (beta)..
then the value of id 1 and 2 is beta... 现在我只想检查值是否存在..。我只想拿回原来的值(alpha),这样就不会有重复.
发布于 2015-08-10 08:43:07
好吧,你只需要把你的查询改为-
$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' ";发布于 2015-08-10 08:52:23
将查询字符串更改为:
$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' AND id != '{$id}'";如果你想在每种情况下都进行数据库操作。超过:
$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' AND id != '{$id}'";
$rs = mysql_query($validate_query,$connection);
if(mysql_num_rows($rs) != 0) {
$query = "UPDATE table_test SET
group= group
WHERE id = '{$id}'";
}
else {
$query = "UPDATE table_test SET
group= '{$group}'
WHERE id = '{$id}'";
}
$result = mysql_query($query, $connection); 发布于 2015-08-10 09:57:05
您可以在列组中使用unique constraint,因此当您尝试使用重复值进行更新时,更新将触发一个错误。
其他解决方案是在update语句中添加和exist子句。
ie:
UPDATE table_test
SET group= '{$group}'
WHERE id = '{$id}'
AND NOT EXISTS ( select 1
FROM table_test
WHERE group= '{$group}' )现在,该语句将不会触发错误,您可能必须检查更新了多少行,以确定组是否已经存在。
https://stackoverflow.com/questions/31915003
复制相似问题