2011-01-06 35 views
9

Đây là vấn đề của tôi. Tôi cần nhiều hơn một hàng từ cơ sở dữ liệu và tôi cần hàng đầu tiên cho một số tác vụ nhất định và sau đó xem lại toàn bộ danh sách để tạo một bộ bản ghi.Nhận hàng đầu tiên của chuỗi tài nguyên mysql?

$query = "SELECT * FROM mytable"; 
$result = mysql_query($query); 

$firstrow = //extract first row from database 
//add display some field from it 


while($row = mysql_fetch_assoc($result)) { 
    //display all of them 
} 

Bây giờ, làm cách nào để chỉ trích xuất hàng đầu tiên?

+0

hàng đầu tiên trong một bảng là gì? – Toto

+0

@ M42: Anh ấy muốn hàng đầu tiên trong bộ sưu tập, rõ ràng. –

Trả lời

13

Sử dụng mysql_fetch_assoc() không chỉ tìm nạp một hàng, nó cũng di chuyển con trỏ bên trong của tập kết quả sang hàng kế tiếp. Để đặt lại tài nguyên kết quả thành hàng đầu tiên, bạn cần sử dụng mysql_data_seek().

$query = "SELECT * FROM mytable"; 
$result = mysql_query($query); 

$firstrow = mysql_fetch_assoc($result); 

// reset the result resource 
mysql_data_seek($result, 0); 


while($row = mysql_fetch_assoc($result)) { 
    //display all of them 
} 
+0

Làm thế nào không hiệu quả. Tại sao trên trái đất bạn sẽ muốn làm một hoạt động tìm kiếm và lấy lại hàng đầu tiên một lần nữa, khi bạn đã giải nén nó? –

+0

Bạn cần hỏi @mrNepal tại sao anh ấy muốn làm điều đó. Có thể có một lý do rất tốt. Mặt khác, nếu không có lý do cụ thể, tôi đồng ý rằng đó không phải là cách tiếp cận tối ưu. Tôi đơn giản trả lời câu hỏi khi nó được đặt. –

+0

Tôi không thể hiểu tại sao downvote. Đây là câu trả lời hoàn hảo cho vấn đề của tôi. Tôi lý do tôi cần hàng đầu tiên và sau đó chạy lại với kết quả, là bởi vì tôi đang sử dụng cùng một bộ kết quả cho 1) Hiển thị toàn bộ nội dung và 2) Để hiển thị nội dung liên quan khác. – mrN

0

Mỗi lần bạn gọi mysql_fetch_assoc($result), bạn sẽ nhận được một hàng. Vì vậy, thay vì thực hiện nó lặp đi lặp lại trong một vòng lặp, chỉ cần thực hiện nó một lần:

$result = mysql_query("..."); 
if ($row = mysql_fetch_assoc($result)) { 
    $firstRow = $row; 

    while ($row = mysql_fetch_assoc($result)) { 
     // all the rest 
    } 
} 

Tuyên bố từ chối: đây có thể là mã đẹp hơn, nhưng bạn có ý tưởng!

+0

không có nó không hoạt động .... trong khi cũng lấy một hàng chỉ quá – mrN

+0

Thật vậy, Tomalak quên đặt lại con trỏ bên trong. – Andrew

+0

@Andrew: Eh? Những gì con trỏ nội bộ. Tôi không thấy lý do đoạn mã này không hoạt động. –

1

Nếu bạn muốn để có được tất cả các hàng từ một trong những đầu tiên một lần nữa sau đó hãy thử như sau

$query = "SELECT * FROM mytable"; 
$result = mysql_query($query); 

if ($row = mysql_fetch_assoc ($result){ 
    $firstRow = $row; 
    mysql_data_seek($result, 0); 

    while($row = mysql_fetch_assoc($result)) { 
     //display all of them 
    } 
} 

Thông tin thêm về mysql_data_seek đây: PHP: mysql_data_seek - Manual

+0

+1, cảm ơn sự giúp đỡ – mrN

+0

Nhận xét giống như David. –

+0

Nhận xét giống như câu trả lời trước đó. – mrN

Các vấn đề liên quan