我的页面中有以下代码
<?php
$dbc = mysql_connect();
$db = mysql_select_db();
$results= mysql_query("SELECT * FROM tbl_teams");
?>
<div class="datagrid"><table>
<thead><tr><th>header</th><th>header</th><th>header</th></tr></thead>
<tbody>
<tr>
<td>
<select name="game1_team1"><option value="0">Choose Team 1</OPTION><?php while($row = mysql_fetch_array($results)) {echo '<option value="'.$row['team_ID'].'">'. $row['team_name'].'</option>';}?></select>
</td>
<td>Vs.</td>
<td>
<select name="game1_team2"><option value="0">Choose Team 2</OPTION><?php while($row = mysql_fetch_array($results)) {echo '<option value="'.$row['team_ID'].'">'. $row['team_name'].'</option>';}?></select>
</td>
</tr>
代码在下拉列表 game1_team1 中显示 MySQL 表中的足球队名称,但在 game1_team2 中不显示;就好像我不能两次使用相同的查询一样。我该如何补救?我想对页面上的 60 个相同下拉菜单使用相同的值。
我可以将值存储到数组中并在每个下拉列表中重新使用它们吗?
注意:mysql_*
函数系列已弃用!
这是什么意思?这意味着您今天应该停止使用它。旧代码应该在时间和预算允许的情况下进行更新,但您永远不应该永远编写涉及这些功能的新代码行
另一个注意事项:使用 SELECT *...
是不好的做法——明确命名您将在查询中使用的列。这样,如果表结构发生变化,您可以检测到,因为您的查询将失败,并做出相应的 react (在代码中)。这是称为防御性编码的更广泛概念的一部分。
关于手头的问题!
您可以使用 PDO 从数据库中获取一组结果。然后,您可以根据需要多次使用该数组!
// simple sample for connecting with PDO
$host="my.host.name"; // Host name
$username="my_user_name"; // username
$password="my password"; // password
$db_name="my_database_name"; // Database name
$pdo = new PDO('mysql:host='.$host.';dbname='.$db_name, $username, $password);
// actually do the query
$statement= $pdo->prepare('
SELECT
time_ID,
team_name
FROM
`tbl_teams`
');
$statement->execute();
// get an array with all the results
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
之后,您可以循环数组以生成一组选项,或对数据执行任何其他操作。例如:
$options = array();
foreach ($results as $one_result){
$options[] = '<option value="'.$one_result['team_ID'].'">'.$one_result['team_name'].'</option>';
}
print '<select name="someSelectElement">'.implode('', $options).'</select>';
文档