php - 需要帮助 : how to design my webpage that sorts data from a database?

标签 php javascript mysql html sql

对于这个长问题,我提前表示歉意。我正在为 DNA 研究实验室设计一个网页,但我陷入了一个特定的问题。网页访问单个MySQL数据库,但该数据库包含数十个表。每张表对应一个实验。每个表格都遵循相同的通用格式:一列列出 DNA 基因名称,下一列显示存在的 DNA 基因的数量。然而,每个表包含一组不同的基因(一个实验中的基因并不总是与另一个实验中的相同)。

此时,我希望用户输入他感兴趣的基因,然后网页将显示哪些实验有该基因的数据。基本上,我需要找出数据库中的哪些 MySQL 表包含我想要的数据。

在我看来,我需要循环遍历 MySQL 数据库中的每个表,并对每个表执行 SELECT WHERE 查询。如果它返回某些内容,则它是我想要的表,我会将表名称添加到数组中。如果没有,我就转到下一张 table 。

执行此操作的最佳方法是什么?我需要什么语言?我将使用 HTML 和 PHP 来创建网页,使用 MySQL 来进行数据库查询。但是,我可以使用什么来循环浏览表格?我在想 javascript 还是 ASP?

最佳答案

假设您无法更改数据库结构。您可以使用以下查询获取数据库中所有表的列表:

SHOW TABLES

接下来,您需要知道哪些表用于您关心的实验。您可能需要进行某种字符串匹配 - 希望它们的名称以“experiment_”或其他内容开头。

然后您只需运行 SELECT 语句在表中查找该基因。最后,您以某种方式将实验名称映射到表名称,并显示这些实验名称。代码类似于:

$result = mysql_query("show tables");

$tables = array();

while ($row = mysql_fetch_array($result)) {
   // Determine whether this is an experiment table.
   if (preg_match("/^experiment_/", $row[0])) {
       $tables[] = $row[0];
   }
}

$tables_with_gene = array();

// As you can see, every search runs bunches of queries.
foreach ($tables as $table_name) {
    $result = mysql_query("select gene_name from $table where gene_name = '$gene_name'");

    if (mysql_num_rows($result)) {
        $tables_with_gene[] = $table_name;
    }
}

// Now you look up the experiment names
$experiment_names = array();

foreach ($tables_with_gene as $table_name) {
    $result = mysql_query("select experiment_name from experiments where table_name = '$table_name'");
    while ($row = mysql_fetch_array($result)) {
        $experiment_names[] = $row[0];
    }

 }

最后,$experiment_names 有一个包含相关基因的实验列表。

请注意,如果基因名称是用户输入的,您需要首先对其进行清理以避免 SQL 注入(inject)。

但是,是的,您可能想要一张看起来像这样的表:

experiment_id
gene_name
gene_frequency

然后您可以通过一个查询完成这一切:

SELECT e.experiment_name FROM experiment_data d JOIN experiments e 
ON d.experiment_id = e.id
WHERE d.gene_name = 'your gene name'

关于php - 需要帮助 : how to design my webpage that sorts data from a database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752913/

相关文章:

javascript - 无法让我的 Javascript 在 Joomla 中工作

JavaScript:未定义 Ci

MySQL查询自定义排序功能

php - JSON 响应返回 null

php - MySQL 查询可以帮助找到相似的客户记录吗?

php - 在元标记中显示动态标记

php - 你如何让 url 以斜杠结尾显示?

php - excel如何读取XML文件?

javascript - Dojo 1.7 Ajax 内容和 AMD 要求

mysql - MySQL中加入同表临时表