使用Where条件获取表行标识到行号

时间:2012-06-10 09:47:32

标签: php sql

我正在尝试获取表格的行ID或行号。

这是我的代码。

<?php

include("config.php");

$imgtable_name = "thamana_gallery";
$image_name = "37a4d8b18493d91157b5c5e097e8bd1a6.jpg";

$sql_img = "SELECT 0 INTO @rowId";
mysql_query($sql_img);
$sql_img = "SELECT @rowId := @rowId + 1 as rowid, imgname from $imgtable_name where imgname='$image_name'";
$result_img = mysql_query($sql_img);

$imp_img = mysql_fetch_array( $result_img, MYSQL_ASSOC );

echo $image_name;
echo "<br/>";
echo $imp_img['rowid'];

echo "<br/>";
echo $imp_img['imgname'];

?>

我得到的结果如下:

++++++++++++++++++++++++++++++++++++++
37a4d8b18493d91157b5c5e097e8bd1a6.jpg
1
37a4d8b18493d91157b5c5e097e8bd1a6.jpg
++++++++++++++++++++++++++++++++++++++

图像名称位于表格的第6行,但结果为1.

我错过了什么?

2 个答案:

答案 0 :(得分:0)

为什么不让id-column包含主索引和自动增量?然后,你可以检索

SELECT id, imgname FROM ...

答案 1 :(得分:0)

计算从数据库中检索的每一行的@row。如果要检索10行,则将从1到10进行计算,如果要检索特定行,因为限制名称,则只返回一行。

要将结果限制为具有特定rowId的行,您需要执行以下操作:

select * from 
  (
    select @rowId := @rowId + 1 as rowid, imgname from TABLE_NAME order by imgname
  ) a 
where 
  a.imgname=:IMG_NAME