php - 多次使用 MySQL 结果数组

标签 php mysql

<分区>

我的页面中有以下代码

    <?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>';

文档

关于php - 多次使用 MySQL 结果数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366140/

相关文章:

使用 SSL 登录 php

php - Laravel 如何安排稍后发送的邮件?

mysql - 结合图形数据库和 RDBMS

mysql - 应该在SQL中引用名字吗?

php - 如果输出等于 0000-00-00 00 :00:00,如何更改 echo 输出

php - 学习 PHP : Good examples of "build-this" based lessons?

php - Symfony 4 全局路由前缀

php - 使用 Youtube API V3 和 PHP 将视频上传到 Youtube

mysql - 将两个 mySQL select 语句分组到一个别名下并对该别名进行排序

php - 无法使用php mysqli连接到远程服务器上的MySQL数据库