如何同时添加或删除单个列中的数据?

时间:2017-06-10 11:50:44

标签: php mysql database

我正在使用数组@ $ new = implode(',',$ _ POST ['new'])更新单列数据库;

我使用的查询工作正常

$query = mysql_query("UPDATE events SET std_list=CONCAT( std_list, ',".$new."') WHERE id='".$district."' ") or die(mysql_error());

现在我还想在向其添加新数据之前从同一列中删除一些数据..例如列名称std_list包含值1,2,3,4,5,6,7,8,9和另一个变量$ a包含4,5,6和$ new = 4,5。我想从列中删除4,5,6,并且只想添加4,5。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您要从$a移除$std_list,但保留$new的值。

$std_list = '1,2,3,4,5,6,7,8,9';
$a = '4,5,6';
$new = '4,5';

// Create arrays from values
$std_list_array = explode(',', $std_list);
$a_array = explode(',', $a);
$new_array = explode(',', $new);

// Remove values from $a
$values = array_diff($std_list_array, $a_array);

// Add values from $new
$values = array_merge($values, $new_array);

// Only keep unique values
$values = array_unique($values);

// Sort (maybe?)
sort($values);

// Convert to string
$values = implode(',', $values);

// string(15) "1,2,3,4,5,7,8,9"
var_dump($values);

然后,您可以将$values插入数据库。我用mysqli since mysql_query is deprecated编写了这个:

$conn = new mysqli('localhost', 'user', 'password', 'database');

$stmt = $conn->prepare("UPDATE events SET std_list = ? WHERE id = ?");
$stmt->bind_param('si', $values, $district);
$result = $stmt->execute();

在此处测试代码:http://ideone.com/e3THDV