Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用数组按查询更新订单_Php_Mysql - Fatal编程技术网

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/新编号映射插入另一个表中(一个查询可能会插入所有行)然后发出一个更新查询来设置表中的数值。