Php 使用数组按查询更新订单
我有一个数组,其中包含数字。还有一个表,有两列:Php 使用数组按查询更新订单,php,mysql,Php,Mysql,我有一个数组,其中包含数字。还有一个表,有两列:id和num 例如,数组是:(2,7,1,0) 我想按id对表进行排序(orderbyid DESC),并用数组元素按此顺序更新num值 因此,顺序中的第一个元素num值应为2,第二个元素为7,以此类推 是否可以只使用mySQL,或者我必须用PHP管理它 例如: 表: id | num -------- 1 | 0 5 | 0 6 | 0 11| 0 数组:(5,9,10,-20) 查询后的表: id | num -------- 1
id
和num
例如,数组是:(2,7,1,0)
我想按id对表进行排序(orderbyid DESC
),并用数组元素按此顺序更新num
值
因此,顺序中的第一个元素num
值应为2,第二个元素为7,以此类推
是否可以只使用mySQL,或者我必须用PHP管理它
例如: 表:
id | num
--------
1 | 0
5 | 0
6 | 0
11| 0
数组:(5,9,10,-20)
查询后的表:
id | num
--------
1 | 5
5 | 9
6 | 10
11|-20
使用PHP逐行更新更好。使用PHP逐行更新更好。使用PHP逐行更新更好。使用PHP逐行更新更好。简单地说,您可以这样做:
$array = array(5,9,10 -20);
$i = 0;
$q = 'select id from `table` order by id desc limit ' . count($array);
// use some sql magic here - PDO or mysqli to get results
while ($row = $sql_result->fetch()) {
$new_value = $array[$i];
$id = $row['id'];
$q = 'update `table` set `num` = ' . $new_value . ' where `id` = ' . $id;
// more sql magic here. with prepared statements etc
$i++;
// and increase $i to get next array value
}
简单地说,你可以这样做:
$array = array(5,9,10 -20);
$i = 0;
$q = 'select id from `table` order by id desc limit ' . count($array);
// use some sql magic here - PDO or mysqli to get results
while ($row = $sql_result->fetch()) {
$new_value = $array[$i];
$id = $row['id'];
$q = 'update `table` set `num` = ' . $new_value . ' where `id` = ' . $id;
// more sql magic here. with prepared statements etc
$i++;
// and increase $i to get next array value
}
简单地说,你可以这样做:
$array = array(5,9,10 -20);
$i = 0;
$q = 'select id from `table` order by id desc limit ' . count($array);
// use some sql magic here - PDO or mysqli to get results
while ($row = $sql_result->fetch()) {
$new_value = $array[$i];
$id = $row['id'];
$q = 'update `table` set `num` = ' . $new_value . ' where `id` = ' . $id;
// more sql magic here. with prepared statements etc
$i++;
// and increase $i to get next array value
}
简单地说,你可以这样做:
$array = array(5,9,10 -20);
$i = 0;
$q = 'select id from `table` order by id desc limit ' . count($array);
// use some sql magic here - PDO or mysqli to get results
while ($row = $sql_result->fetch()) {
$new_value = $array[$i];
$id = $row['id'];
$q = 'update `table` set `num` = ' . $new_value . ' where `id` = ' . $id;
// more sql magic here. with prepared statements etc
$i++;
// and increase $i to get next array value
}
这在Mysql中似乎是可能的,所以您想根据一个查询中给出的数组更新这些记录吗?或者您到底在寻找什么。我想根据记录在有序结果中的位置,从数组元素更新records num列,但如何将第n个记录
num
值设置为数组第n个元素?您应该在php中执行此操作,并对每一行发出更新查询。在mysql中所做的任何事情都会非常“黑客化”,并且容易出现问题。Mysql实际上没有内置的rownum。如果有,您可能会使用在数字列表中查找该项。如果没有rownum,您可能需要使用一个临时表,或者使用每个id/number组合创建一个大型case语句。除非您有几百个更新,否则您可能不会注意到更新有问题。如果您有很多更新,那么最好使用一个临时表,在该表中查询所有id并将id/新编号映射插入另一个表中(一个查询可能会插入所有行)然后发出一个更新查询来设置表中的数值。这在Mysql中似乎是可能的,所以您想根据一个查询中给定的数组更新这些记录吗?或者您到底在寻找什么。我想根据记录在有序结果中的位置,从数组元素更新records num列,但如何将第n个记录num
值设置为数组第n个元素?您应该在php中执行此操作,并对每一行发出更新查询。在mysql中所做的任何事情都会非常“黑客化”,并且容易出现问题。Mysql实际上没有内置的rownum。如果有,您可能会使用在数字列表中查找该项。如果没有rownum,您可能需要使用一个临时表,或者使用每个id/number组合创建一个大型case语句。除非您有几百个更新,否则您可能不会注意到更新有问题。如果您有很多更新,那么最好使用一个临时表,在该表中查询所有id并将id/新编号映射插入另一个表中(一个查询可能会插入所有行)然后发出一个更新查询来设置表中的数值。这在Mysql中似乎是可能的,所以您想根据一个查询中给定的数组更新这些记录吗?或者您到底在寻找什么。我想根据记录在有序结果中的位置,从数组元素更新records num列,但如何将第n个记录num
值设置为数组第n个元素?您应该在php中执行此操作,并对每一行发出更新查询。在mysql中所做的任何事情都会非常“黑客化”,并且容易出现问题。Mysql实际上没有内置的rownum。如果有,您可能会使用在数字列表中查找该项。如果没有rownum,您可能需要使用一个临时表,或者使用每个id/number组合创建一个大型case语句。除非您有几百个更新,否则您可能不会注意到更新有问题。如果您有很多更新,那么最好使用一个临时表,在该表中查询所有id并将id/新编号映射插入另一个表中(一个查询可能会插入所有行)然后发出一个更新查询来设置表中的数值。这在Mysql中似乎是可能的,所以您想根据一个查询中给定的数组更新这些记录吗?或者您到底在寻找什么。我想根据记录在有序结果中的位置,从数组元素更新records num列,但如何将第n个记录num
值设置为数组第n个元素?您应该在php中执行此操作,并对每一行发出更新查询。在mysql中所做的任何事情都会非常“黑客化”,并且容易出现问题。Mysql实际上没有内置的rownum。如果有,您可能会使用在数字列表中查找该项。如果没有rownum,您可能需要使用一个临时表,或者使用每个id/number组合创建一个大型case语句。除非您有几百个更新,否则您可能不会注意到更新有问题。如果您有很多更新,那么最好使用一个临时表,在该表中查询所有id并将id/新编号映射插入另一个表中(一个查询可能会插入所有行)然后发出一个更新查询来设置表中的数值。