2017-08-04 54 views
1

我有一个数据库表,我需要改变一个基于另一个字段。每个id有两个记录“option_id”。每个都有一个sort_order。基于PHP的另一个修改MySQL字段

So for example: 
12345, 1 
12345, 2 

我需要能够找到具有相同ID,并有一个用于SORT_ORDER 1的任何记录,以及一个用于SORT_ORDER 2.然后,我需要的1 SORT_ORDER更改为0,而SORT_ORDER 2到1.我想用PHP来做到这一点是可能的。

+0

无论“option_id”和“sort_order”是否该行都有一个ID字段来标识一个特定的行? – Progman

+0

例如使用原则的事件 – Vladislav

+0

不,除了每个都有两条记录的option_id之外,没有ID字段。 –

回答

1

假设你可以自己处理连接字符串(我在这里假设PDO)。我最近不得不做这样的数字交换。

然后执行以下操作:

$sql = "SELECT * FROM table_name WHERE sort_order = 2"; 
    while($row = $results->fetch(PDO::FETCH_ASSOC)){ 

     $sql_1 = "UPDATE table set sort_order = 0 WHERE sort_order = 1 AND option_type_id = " . $row['option_id']; //then execute query 
     $sql_2 = "UPDATE table set sort_order = 1 WHERE sort_order = 2 AND option_type_id = " . $row['option_id']; //then execute query. 
    } 

的逻辑是,你找到匹配的记录,更改1比0,然后更改为2比1反其道而行之真的会弄乱记录。

+0

*注意:我忽略了实际的查询执行。我想你可以处理那部分。 – Difster

+0

谢谢!这让我需要去哪里。 –

相关问题