【问题标题】:How to get row number from inputted data (sql and php)如何从输入的数据中获取行号(sql和php)
【发布时间】:2016-08-05 07:33:15
【问题描述】:

我遇到这个问题有一段时间了,我似乎无法在谷歌上找到正确的答案。不知道是不是我运气不好。

无论如何,如何从我从 PHP 文本字段输入的特定记录中获取行号,例如:

ID          NAME
11111       john
11112       roger
11113       ellis
11114       jack
11115       wendy

所以如果我输入 11113,输出会像“这个 ID 在数字 3”。

这是我的代码:

$id=$_POST['id'];
$query="SELECT COUNT(*) from employee where id like '%$id%'";
$num=mysql_query($query);
echo "this ID is at number $num";

谁能指出我哪里出错了?

【问题讨论】:

  • 您没有用于编号的字段,添加一个带有编号的字段,其中“ellis”的编号为 3,然后您将能够得到该结果。
  • COUNT 计算在WHERE 条件中匹配的行。这不是你所期望的。此外,您的表中没有行号。不使用ORDER BY 的行顺序可以不同
  • 警告:如果您只是学习 PHP,请不要使用mysql_query 接口。它是如此可怕和危险,以至于它在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践。你的用户参数不是properly escaped,有SQL injection bugs可以被利用。
  • 这里没有固有编号,因此它出现在列表中的顺序完全是任意的,除非您有 ORDER BY 子句。

标签: php mysql sql row rownum


【解决方案1】:

这是一个查询示例,说明如何在不为计数添加另一列的情况下执行此操作:

SELECT e.*,b.count FROM employee as e, (SELECT COUNT(*) as count FROM employee WHERE id <= 3) as b WHERE e.id = 3

使用另一个选择查询计算所有 id 小于请求的 id 的行

或者如果您只想要行的偏移量而不需要其数据:

SELECT COUNT(*) as count FROM employee WHERE id <= 3

【讨论】:

    【解决方案2】:
    1. 首先,你应该从员工表中选择 *

    2. 然后将结果解析为数组,

    3. 扫描上面的数组(步骤2)并找到你的值(11113)

    4. 如果找到 (3),则可以返回数组索引。

    【讨论】:

      【解决方案3】:

      第一件事: 您正在使用旧的 PHP 方法作为数据库,请使用 PDO

      如果你不想得到最后一个插入 ID,可以用 PDO 捕获它

      我不明白你的 SQL,因为你想通过 ID 过滤来获取 ID?当您的 ID 是 INTEGER/NUMBER 时,您的陈述就毫无意义。

      【讨论】:

        猜你喜欢
        • 2013-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 1970-01-01
        • 2018-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多