iT邦幫忙

0

抓出該筆資料在資料庫中為第幾筆?

php
chan15 2009-08-11 21:56:1312986 瀏覽

各位好,如何得知某筆資料是在資料庫中第幾筆資料呢?

看更多先前的討論...收起先前的討論...
lmwu2002 iT邦新手 4 級 ‧ 2009-08-12 08:45:33 檢舉
要看你是用那一種資料庫,不同DB有不同的做法。
是要用欄位記錄第幾筆或是依實際存入資料庫的順序。
chan15 iT邦新手 5 級 ‧ 2009-08-12 14:49:31 檢舉
我用的是mysql
外獅佬 iT邦大師 1 級 ‧ 2009-08-12 15:03:38 檢舉
To chan15:
那你最好自己在資料庫記錄,或者在程式中處理。
http://forums.devshed.com/mysql-help-4/is-there-any-function-in-mysql-like-recno-2643.html
這是MySQL網站上,與你問相同的問題,答案是....沒有。
chan15 iT邦新手 5 級 ‧ 2009-08-12 15:05:02 檢舉
我目前用一個比較土法煉鋼的方法

<?php
$photoId = $_GET['photoId']; // 照片id
$albumId = $_GET['albumid']; // 相簿id
$page = 12; // 每頁張數

mysql_select_db($db);
$sql = sptintf("SELECT ph.*
	FROM album al 
	INNER JOIN photos ph ON ph.albumId = al.al_id AND al.al_id = %s 
	ORDER BY ph.ph_id ASC",
		$albumId);
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_row($result);
$num = mysql_num_rows($result);

	// 將所有id寫入陣列
	do {
		$arrId[] = $row['ph_id'];
	} while($row = mysql_fetch_row($result));
	
	// 查出該照片在陣列的位置
	$position = array_search($photoId, $arrId)+1;
	
	// 若為末張修正正確頁數
	if ($position%$page == 0) {
		$pages = (int)($position/$page)-1;
	} else {
		$pages = (int)($position/$page);
	}
	
	return '<a href="album.php?pages=' . $pages . '&albumId=' . $albumId . '">回上層</a>';
	
mysql_free_result($result);
?>
14
fillano
iT邦超人 1 級 ‧ 2009-08-12 15:49:47
最佳解答

提供一個想法:這要看你怎麼排序,如果你分頁也是用依賴上頁的ph.ph_id,而這是一個遞增的int(例如auto_increment),那你可以用count計算ph.ph_id小於等於目前照片id的筆數。

你不用把所有ph_id找出來用程式比對啦(討論中的那樣),用sql就可以解決了(依照你的邏輯)。

chan15 iT邦新手 5 級 ‧ 2009-08-12 16:03:49 檢舉

也是個方式。

18
ycl8000
iT邦高手 1 級 ‧ 2009-08-12 08:25:48

請問在什麼場合下會需要得知某筆資料是在資料庫中第幾筆資料?

看更多先前的回應...收起先前的回應...

+1 我也很好奇

jackytsao iT邦研究生 1 級 ‧ 2009-08-12 08:58:58 檢舉

寫資料庫作業時~~~~

chan15 iT邦新手 5 級 ‧ 2009-08-12 11:13:33 檢舉

Hi,我是要寫相簿的回上層功能
所以要查出該照片在該相簿的第幾筆,這樣才能知道回上層時該到"第幾頁"

外獅佬 iT邦大師 1 級 ‧ 2009-08-12 11:20:52 檢舉

弄個變數記錄就好囉....

18
pantc328
iT邦研究生 1 級 ‧ 2009-08-12 09:13:36

在資料表加個int 遞加的欄位就好了.

18
Pankt
iT邦研究生 1 級 ‧ 2009-08-12 09:52:01

在SQL資料庫庫裡,似乎不太需要知道資料是在資料庫中第幾筆,反正SQL會找到它,也不用關心它怎麼做到的、、、
但是如果是隨機檔或循序檔,那麼你要找到這筆資料,倒不見得要知道是第幾筆,但程序沒有第幾筆的旗標或記錄,那麼你將無法找到你要的記錄、、、

16
外獅佬
iT邦大師 1 級 ‧ 2009-08-12 09:57:15

古早的DBF、DBC確實有這樣的東西....
在Visual FoxPro裡頭,可以用RECNO()取得目前資料指標的位置....
只是...這個對於目前大多數的資料庫....意義並不大

我要發表回答

立即登入回答