0

テーブルの行 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 になります。

私は何を逃したのですか?

4

2 に答える 2

0

@row は、データベースから取得される行ごとに計算されます。10 行を取得する場合は、1 から 10 までの番号が付けられます。特定の行を取得する場合は、名前で制限しているため、1 行だけが返されます。

結果を特定のrowIdを持つ行に制限するには、次のようにする必要があります:

select * from 
  (
    select @rowId := @rowId + 1 as rowid, imgname from TABLE_NAME order by imgname
  ) a 
where 
  a.imgname=:IMG_NAME
于 2012-06-10T10:30:15.920 に答える
0

プライマリ インデックスと自動インクリメントを備えた id 列を持たないのはなぜですか? 次に、取得するだけです

SELECT id, imgname FROM ...
于 2012-06-10T10:17:38.757 に答える