Php 对数组行进行编号

Php 对数组行进行编号,php,mysql,arrays,Php,Mysql,Arrays,我用mysql选择了整个表,有卖票记录。 当我用foreach将它们写出来时,它们正确地显示了从顶部最新售出的票到底部最早购买的票。 问题是ID看起来不好。在发布之前,我做了很多测试购买,现在id号从50开始。 我想保持现在的状态,但只对记录进行编号,从1开始使用正常数字。问题是最高的数字必须在顶部,因为最新的记录在顶部。有人能告诉我怎么做吗?使用php按降序显示自定义索引 $sql ="SELECT * FROM tbl_purchases ORDER BY id DESC"; if ($r

我用mysql选择了整个表,有卖票记录。 当我用foreach将它们写出来时,它们正确地显示了从顶部最新售出的票到底部最早购买的票。 问题是ID看起来不好。在发布之前,我做了很多测试购买,现在id号从50开始。
我想保持现在的状态,但只对记录进行编号,从1开始使用正常数字。问题是最高的数字必须在顶部,因为最新的记录在顶部。有人能告诉我怎么做吗?

使用php按降序显示自定义索引

$sql ="SELECT * FROM  tbl_purchases ORDER BY id DESC";
if ($result = $link->query($sql)) {
    $index = mysqli_num_rows($result);
    echo "<table border='1'>";
    while($row = mysqli_fetch_assoc($result)) {
        echo "<tr>".
                "<td>{$index}</td/>".
                "<td>{$row['id']}</td/>".
                "<td>{$row['name']}</td>".
             "</tr>";
        $index--;
    }
    echo "</table>";
}
对于INNO DB

SET  @num := 0;
UPDATE tbl_purchases SET id = @num := (@num+1);
ALTER TABLE tbl_purchases AUTO_INCREMENT =1;

使用php按降序显示自定义索引

$sql ="SELECT * FROM  tbl_purchases ORDER BY id DESC";
if ($result = $link->query($sql)) {
    $index = mysqli_num_rows($result);
    echo "<table border='1'>";
    while($row = mysqli_fetch_assoc($result)) {
        echo "<tr>".
                "<td>{$index}</td/>".
                "<td>{$row['id']}</td/>".
                "<td>{$row['name']}</td>".
             "</tr>";
        $index--;
    }
    echo "</table>";
}
对于INNO DB

SET  @num := 0;
UPDATE tbl_purchases SET id = @num := (@num+1);
ALTER TABLE tbl_purchases AUTO_INCREMENT =1;

通常,当您从DB中提取数据时,通常处于自动增量的ID列是不可靠的,因此在提取数据时,您应该运行自己的自动增量。i、 e

<?php foreach($rows as $index => $row): ?>
    <table>
      <td><?php echo $index + 1 ?></td>

通常,当您从数据库中提取时,通常处于自动增量的ID列不可靠,因此在提取时,您应该运行自己的自动增量。i、 e

<?php foreach($rows as $index => $row): ?>
    <table>
      <td><?php echo $index + 1 ?></td>

当您使用while循环时,您必须在开始循环之前创建一个变量,并在循环中将其增加1,并将其用作行号:)

$sql=“按id描述从tbl\U采购订单中选择*”;
如果($result=$link->query($sql)){
回声“;
$line\u counter=mysqli\u num\u行($result);
while($row=mysqli\u fetch\u assoc($result)){
“回声”。
“{$line_counter}”。
“{$row['id']}”。
“{$row['name']}”。
"";
$line_计数器--;
}
回声“;
}

当您使用while循环时,您必须在开始循环之前创建一个变量,并在循环中将其增加1,并将其用作行号:)

$sql=“按id描述从tbl\U采购订单中选择*”;
如果($result=$link->query($sql)){
回声“;
$line\u counter=mysqli\u num\u行($result);
while($row=mysqli\u fetch\u assoc($result)){
“回声”。
“{$line_counter}”。
“{$row['id']}”。
“{$row['name']}”。
"";
$line_计数器--;
}
回声“;
}

如果以上任何一项不清楚,请通知我。您必须通过ID查询进行描述,并显示带有新生成变量的序列号。是否要将ID重置为从1开始?上述答案的可能重复项是正确的,这就是您想要的,您也可以删除该表并重新创建它。如果以上任何一项不清楚,请告诉我。您必须通过ID查询进行描述,并显示带有新生成变量的序列号。是否要将ID重置为从1开始?上述答案的可能重复项是正确的,这就是您想要的,您也可以删除该表并重新创建它。是的,但数字将从列表顶部的1变为底部的1。但最上面一行是最新购买的,所以它必须有最大的数量。我的大脑很难恢复,哈哈,我修改了答案:)哦,我想不出最大的身份证号码是多少,但我可以只计算行数,并随着每个循环而减少。太棒了,哈哈。谢谢是的,但是数字将从列表顶部的1开始,并将增加到底部。但最上面一行是最新购买的,所以它必须有最大的数量。我的大脑很难恢复,哈哈,我修改了答案:)哦,我想不出最大的身份证号码是多少,但我可以只计算行数,并随着每个循环而减少。太棒了,哈哈。非常感谢。