0

我是许多人认为的业余程序员,但我正试图开始向更专业的程序员过渡。在这样做时,我实习的公司要求我重构一些 MySQL 查询,这样我就不必在每次将新的不同字段添加到数据库时都复制、粘贴和编辑,从而允许网站在将唯一数据引入数据库时​​动态更新自身。我已经构建了一个显示特定项目信息的仪表板。在每个项目视图中都有特定于位置的 JQuery 手风琴。到目前为止,我不得不为每个位置复制、粘贴和编辑新查询,尽管站点(位置)是数据库中的一列。我想重构这些查询,以便我只需要编写两个查询:

这是我现在拥有的 MySQL 查询的样子:

    SELECT project, participant, reel, machine, qc_gsr, qc_hr, qc_acz, qc_bre FROM rtcdb.session WHERE site = 'CHI001'

当位置(站点)是芝加哥(CHI001)时,这将选择我需要的数据列。如果我想在我的表中找到不同的站点,我可以这样写:

    SELECT DISTINCT site FROM rtcdb.session;

我想将每个位置的查询结果放在单独的手风琴中,我也不确定我最终将如何做到这一点。这些手风琴的 HTML 格式如下:

    <h3><i><b>Chicago</b></i></h3>
        <div>
            <div id = "accordion">
                <h4 id="green"><b>Data</b></h4>

                <div>
                    <table>
                        <thead>
                            <tr>
                                <th>Project ID</th>
                                <th>Participant ID</th>
                                <th>SEM</th>
                                <th>Kiosk #</th>
                                <th>GSR</th>
                                <th>Heart Rate</th>
                                <th>ACZ</th>
                                <th>ABB</th>
                            </tr>
                        </thead>

                        <tbody>
                            <?php
                                while ($row = mysql_fetch_assoc($chi_results)) {
                                    echo '
                                        <tr>
                                            <td>'.$row["project"].'</td>
                                            <td>'.$row["participant"].'</td>
                                            <td>'.$row["reel"].'</td>
                                            <td>'.$row["machine"].'</td>
                                            <td><img class = "circle" src="'.$row["qc_gsr"].'_circle.png"></td>
                                            <td><img class = "circle" src="'.$row["qc_hr"].'_circle.png"></td>
                                            <td><img class = "circle" src="'.$row["qc_acz"].'_circle.png"></td>
                                            <td><img class = "circle" src="'.$row["qc_bre"].'_circle.png"></td>
                                        </tr> ';
                                    }
                                ?>
                        </tbody>
                    </table>
                </div>
                            </div>
                    </div>

如果您有任何意见,我们将不胜感激。非常感谢您查看这个问题,我希望能听到一些答案!

  • 杰克
4

2 回答 2

0

如果您想要一个显示所有站点的页面,您可以执行以下操作:在链接末尾添加“?site=CHI001”。

在您的脚本中,这将显示为$_GET['site'](您可以使用任何您喜欢的名称)。

使用 mysql_real_escape_string 转换变量 - `$site = mysql_real_escape_string($_GET['site']);'

不要!尝试将变量直接放入 - 这将使攻击者运行他们喜欢的任何数据库命令!请参阅有关 SQL 注入的 php.net 文章,或者相信我的话——这很糟糕!

现在您可以将此值添加到您的 sql 中 - 替换WHERE site = 'CHI001'WHERE site = '$site'

现在您可以针对不同的站点测试该页面。

于 2013-06-25T21:24:51.523 回答
0

首先,确保您编写的任何新代码都使用mysqli_*函数而不是旧mysql_*函数。

如果您想在单个页面上一次获取所有站点的这些数据,请执行一个查询并将其组合在 php 中,如下所示。如果您想要单独的页面,请遵循 AMADANON 的建议。

查询资料

$conn = mysqli_connect(...);
mysqli_select_db(...);
$result = mysqli_query($conn,"SELECT site,my,other,column,names,");
$site_info = array();
while($row = mysqli_fetch_assoc($result)) {
    $s = $row['site'];
    if(!is_array($site_info[$s])) $site_info[$s] = array();
    $site_info[$s][] = $row;
}

页面资料

<?php
foreach($site_info as $site) {
?>
    <div id="accordion">
        <?php echo $site['my'] . $site['column'] . $site['names']; ?>
    </div>
<?php
}
?>
于 2013-06-25T21:30:22.500 回答