2010-06-04 39 views
5

tôi muốn phản hồi mọi thứ từ một truy vấn cụ thể. Nếu echo $ res tôi chỉ nhận được một trong các chuỗi. Nếu tôi thay đổi đối số mysql_result thứ hai, tôi có thể nhận được thứ 2, 2rd vv nhưng những gì tôi muốn là tất cả chúng, lặp lại một cái khác. Làm thế nào tôi có thể biến một kết quả mysql thành một cái gì đó tôi có thể sử dụng?Cách lặp lại các hàng trong bảng từ db (php)

tôi đã cố gắng:

$query="SELECT * FROM MY_TABLE"; 
$results = mysql_query($query); 
$res = mysql_result($results, 0); 

while ($res->fetchInto($row)) { 
    echo "<form id=\"$row[0]\" name=\"$row[0]\" method=post action=\"\"><td style=\"border-bottom:1px solid black\">$row[0]</td><td style=\"border-bottom:1px solid black\"><input type=hidden name=\"remove\" value=\"$row[0]\"><input type=submit value=Remove></td><tr></form>\n"; 
} 

Trả lời

16

Cách tiếp cận thông thường sẽ là một cái gì đó như thế này:

$query="SELECT * FROM MY_TABLE"; 
$results = mysql_query($query); 

while ($row = mysql_fetch_array($results)) { 
    echo '<tr>'; 
    foreach($row as $field) { 
     echo '<td>' . htmlspecialchars($field) . '</td>'; 
    } 
    echo '</tr>'; 
} 
8
$result= mysql_query("SELECT * FROM MY_TABLE"); 
while($row = mysql_fetch_array($result)){ 
     echo $row['whatEverColumnName']; 
} 
+0

Cảm ơn bạn, câu trả lời của bạn hoạt động tốt cũng có, nhưng anh chàng khác đã trả lời nó đầu tiên. –

+2

Thực ra, câu trả lời này chỉ lặp lại một cột đơn từ mỗi hàng. – ToolmakerSteve

10

Mở rộng trên câu trả lời được chấp nhận:

function mysql_query_or_die($query) { 
    $result = mysql_query($query); 
    if ($result) 
     return $result; 
    else { 
     $err = mysql_error(); 
     die("<br>{$query}<br>*** {$err} ***<br>"); 
    } 
} 

... 
$query = "SELECT * FROM my_table"; 
$result = mysql_query_or_die($query); 
echo("<table>"); 
$first_row = true; 
while ($row = mysql_fetch_assoc($result)) { 
    if ($first_row) { 
     $first_row = false; 
     // Output header row from keys. 
     echo '<tr>'; 
     foreach($row as $key => $field) { 
      echo '<th>' . htmlspecialchars($key) . '</th>'; 
     } 
     echo '</tr>'; 
    } 
    echo '<tr>'; 
    foreach($row as $key => $field) { 
     echo '<td>' . htmlspecialchars($field) . '</td>'; 
    } 
    echo '</tr>'; 
} 
echo("</table>"); 

Lợi ích:

0.123.
  • Sử dụng mysql_fetch_assoc (thay vì mysql_fetch_array không có tham số thứ 2 để xác định loại), chúng ta tránh nhận từng lĩnh vực hai lần, một lần cho một số chỉ số (0, 1, 2, ..), và lần thứ hai cho khóa kết hợp.

  • Hiển thị tên trường dưới dạng hàng tiêu đề của bảng.

  • Cho biết cách nhận cả hai column name ($ key) và value (trường $) cho mỗi trường, như lặp qua các trường của hàng.

  • Được bọc trong <table> để hiển thị chính xác.

  • (TÙY CHỌN) chết với hiển thị chuỗi truy vấn và mysql_error, nếu truy vấn không thành công.

Kết quả ví dụ:

Id  Name 
777  Aardvark 
50  Lion 
9999 Zebra 
+1

mysql_fetch_assoc giải quyết vấn đề đầu ra trùng lặp của tôi :) +1 –

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