123,567,287,124,172,846,372,187
我希望它看起来像这样
id=123 and SortNumber=1
id=567 and SortNumber=2
id=287 and SortNumber=3
我想基于此更新表格,所以像这样
UPDATE char_
SET SortNumber=1
WHERE id=123
Set SortNumber=2
WHERE id=567
现在,我想我可以做这样的事情
$variable=123,567,287,124,172,846,372,187
$anothervariable=$variable = str_replace(",", "\r\n", $variable);
$i=0;
$i++;
mysqli_query(UPDATE char_ SET SortNumber=$i WHERE id=$anothervariable)
但是,我不确定代码是100正确的,变量将是整个内容,我不知道如何为每一行设置不同的变量?
答案 0 :(得分:1)
具有讽刺意味的是,您可以直接在MySQL中执行此操作
update char_
set sortnumber = find_in_set(id, $variable)
where find_in_set(id, $variable) > 0;
注意:这不会利用id
上的索引,因此只有char_
很小(数十或数百行)或者您不关心性能时才使用此索引。
答案 1 :(得分:0)
建议您使用explode()
和foreach()
。
$variable = '123,567,287,124,172,846,372,187';
$columns = array_filter(explode(',', $variable));
foreach($columns as $key=>$val){
$sql = "UPDATE char_ SET SortNumber = '".($key + 1)."' WHERE id = " . $val;
$result = mysqli_query($con, $sql);
//.....
}