我有这样的表项:如何这个项目破灭,并更新到数据库
id_item color stock
1 red,green,yellow 10,20,30
这里表车:
id id_trans id_item color qty
1 123 1 red 5
2 123 1 green 2
我想达到的目标是更新表项变成这样这样的:
id_item color stock
1 red,green,yellow 5,18,30
我要做的就是:
$query = mysql_query("select a.color as color, a.stock as stock, b.id_item as id_item,b.color as colors,b.qty as qty from item as a, cart as b where a.id_item = b.id_item and b.id_trans = '123' ");
while($result = mysql_fetch_array($query)){
$colors = $result['colors'];
$color = explode(",",$result['color']);
$stock = explode(",",$result['stock']);
$flag = array_search($colors,$color);
$stock[$flag] = $stock[$flag] - $result['qty'];
$stock = implode(',',$stock);
mysql_query("update item set stock = '$stock' where id_item = '$result[id_item]'");
}
从我上面写代码,我有一些问题。 我的问题是,其结果如下:5,20,30 & 10,18,30。所以,当我更新表项,它只是改变这样的:
id_item color stock
1 red,green,yellow 10,18,30
我想要实现的是内爆股票成为5,18,30。 任何人都可以告诉我如何做到这一点,或任何人都可以告诉我在我的代码中有一个错误? THX
[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。 – Kermit 2013-03-21 20:13:00
您可以修复数据结构的任何可能性,以便将列表存储在表中而不是字符串?您的数据结构对关系数据库的使用非常差,从而导致难以解决此问题。 – 2013-03-21 20:13:21
是的,我认为是这样,如果我为不同的颜色制作自己的领域会很容易。我只知道,我可以做到这一点,如果不能,也许我会改变表结构.. – 2013-03-21 20:19:51