2016-08-05 114 views
-1

我遇到过这个问题一段时间,我似乎无法在google上找到正确的答案。我不知道,也许我只是不幸。如何从输入的数据中获取行号(sql和php)

反正我怎样才能从一个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"; 

任何人都可以指出在哪里我会错呢?

+1

'COUNT'计算匹配WHERE条件的行。这不是你所期望的。另外,您的表格中没有行号。没有使用'ORDER BY'的行的顺序可能不同 – Ahmad

+0

您没有编号的字段,添加一个编号为'ellis'的编号为3的字段,然后您就可以获得该结果。 –

+1

**警告**:如果您只是学习PHP,请不要使用['mysql_query'](http://php.net/manual/en/function.mysql-query.php)界面。它是如此可怕和危险的,它是PHP 7.更换喜欢[PDO是不难学(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps删除-pdo-for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南介绍了最佳实践。您的用户参数** **不[正确转义(http://bobby-tables.com/php)和有[SQL注入漏洞(http://bobby-tables.com/),可以利用。 – tadman

回答

0

这里是你如何能做到这一个查询例子不添加另一列数:

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 
0
  1. 起初,你应该选择*从雇员表

  2. 然后解析结果阵列,

  3. 扫描上述阵列(步骤2),并找到自己的价值(11113)

  4. 如果(3)被找到,那么你可以返回数组索引。

0

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

如果你wan't得到最后插入的ID,很可能与PDO

抓住它

我不明白你的SQL,因为你想获得一个ID,通过筛选ID?而当你的ID是INTEGER/NUMBER时,你的陈述是毫无意义的。