将逗号分隔值插入到mysql数据库PHP中

时间:2014-11-30 13:26:30

标签: php mysql

我昨天问了一个类似的问题,但情况并不一样。 我有一些看起来像这样的值,我想插入它们以便

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正确的,变量将是整个内容,我不知道如何为每一行设置不同的变量?

2 个答案:

答案 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);
    //.....
}