PHP开发需求:编写从MySQL markets表获取多条指定字段的函数
修改PHP函数以获取多条市场数据并用于表格展示
Hey there! Your original function only grabs a single row because it calls mysqli_fetch_array() once — let's adjust it to loop through all matching results and return an array of multiple entries. Then I'll show you how to call this function in a separate file and render the data as an HTML table.
Step 1: Updated Function to Fetch Multiple Rows
Here's the revised function that collects all 5 matching market records:
function get_limit_markets(){ // Run the query to get up to 5 active markets, sorted alphabetically $count_nodes = querydb("SELECT id, market, mkt from markets where status = 1 order by market asc limit 5"); $markets = []; // Loop through every row in the result set and add it to our array while ($result = mysqli_fetch_array($count_nodes, MYSQLI_ASSOC)) { $markets[] = [ 'market' => $result['market'], 'mkt' => $result['mkt'], 'id' => $result['id'] ]; } return $markets; }
Key Changes:
- Added an empty
$marketsarray to store all returned rows - Replaced the single
mysqli_fetch_array()call with awhileloop, which keeps fetching rows until there are none left - Returns the full array of market data instead of a single entry
Step 2: Call the Function and Render a Table
In your separate file, you can call the function and use a simple loop to build an HTML table. I've included safeguards to handle empty results and prevent XSS attacks (always a good practice when outputting database data):
// First, include the file where your get_limit_markets function lives // require_once 'path/to/your/functions.php'; // Get all the market data $markets = get_limit_markets(); ?> <!-- HTML Table to Display the Data --> <table border="1" cellpadding="8" cellspacing="0" style="border-collapse: collapse; margin: 20px 0;"> <thead> <tr> <th>ID</th> <th>Market Name</th> <th>MKT Code</th> </tr> </thead> <tbody> <?php if (!empty($markets)): ?> <?php foreach ($markets as $market): ?> <tr> <td><?php echo htmlspecialchars($market['id']); ?></td> <td><?php echo htmlspecialchars($market['market']); ?></td> <td><?php echo htmlspecialchars($market['mkt']); ?></td> </tr> <?php endforeach; ?> <?php else: ?> <tr> <td colspan="3">No active markets found.</td> </tr> <?php endif; ?> </tbody> </table>
Notes on the Table Code:
htmlspecialchars()escapes any special characters in your database data, preventing cross-site scripting (XSS) vulnerabilities- The
if (!empty($markets))check ensures we don't try to loop through an empty array, and shows a friendly message if no data exists - Basic CSS styling is added directly to the table for readability, but you can move this to a separate stylesheet if you prefer
内容的提问来源于stack exchange,提问作者Smbugua
相关产品推荐
相关产品推荐

