如何从多个SQL表中获取值并在html / php表中显示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从多个SQL表中获取值并在html / php表中显示?相关的知识,希望对你有一定的参考价值。

我有一个名为result的SQL数据库,其中包含表ressub。例如,res表列和内容是:

sno regno        name       sub1  sub2  sub3  sub4  sub5  

1   1DU12CS100   student1   70    80    85    70    90     
2   1DU12CS101   student2   75    70    90    80    70
3   1DU12EE015   student3   80    85    70    50    65
4   1DU14CS123   student4   88    85    85    90    70
5   1DU13ME050   student5   85    90    70    60    55

sub表的列和内容是:

Sno   batname     sub1      sub2       sub3       sub4       sub5

1     1DU12CS     Maths     English    Hindi      Urdu       Social 
2     1DU12ME     Sanksrit  Chinese    Japanese   French     Dutch
3     1DU12EE     Circuit   Electrical Electronic Maths      Hindi
4     1DU14CS     Hindi     Maths      Urdu       Science    Maths
5     1DU13ME     Computer  Maths      Electrical Mechanical GK 

我想从表res和表sub中获取一些值并在php / html表中显示。

1DU12CS100  -- 
                                   1DU ->college code
                                   12 ->Student admission year
                                   CS ->computer science
                                   100->roll no of student

当有人以php格式输入1DU12CS100时,结果应该像这样显示......

Subjects    Marks

Maths       70
English     80
Hindi       85
Urdu        70
Social      90

当有人输入1DU13ME050时,显示应该是

Subjects      Marks

Computer      85
Maths         90
Electrical    70
Mechanical    60
GK            55

php表单代码是

<!DOCTYPE HTML>
<html> 
<body>

<form action="result.php" method="post">
Enter your Reg No: <input type="text" name="regno"><br>
<input type="submit">
</form>

</body>
</html>

result.php代码是//应该在这个PHP代码中做出哪些更改?

<?php
$servername = "localhost";
$username = "myresult";
$password = "abcdefg";
$dbname = "myresult";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$regno = mysqli_real_escape_string($conn, $_POST['regno']);

$sql = "SELECT * FROM myresult WHERE regno LIKE '$regno'"; // What changes should be here ??
$result = $conn->query($sql);
$columns = array();
$resultset = array();
while ($row = mysql_fetch_assoc($result)) {
    if (empty($columns)) {
        $columns = array_keys($row);
    }
    $resultset[] = $row;
}


if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "{$row['sub1']}{$row['sub2']}"; // What changes should be made here??



// Print the data
while($row = mysql_fetch_row($result)) {
    foreach($row as $_column) {
        echo "{$_column}";
    }
}
    }
} else {
    echo "Result Not Found";
}
$conn->close();

?>
答案
$sql = "SELECT sub.batname, sub.sub1 as subsub1, sub.sub2 as subsub2, ...,
        Res.sub1 as ressub1, ...
    FROM res 
    JOIN sub ON sub.batname = substr(res.regno, 1, 7)
    WHERE regno LIKE '$regno'";

(我没有列出所有列。由于您将列命名为相同,因此您必须指定别名。更改名称将是一个好主意 - subn不是一个好名字。)

然后下面......

while ($row = $result->fetch_assoc()) { 
    echo "{$row['ressub1']}{$row['subsub1']}";
另一答案

我只是你的SQL查询中的内部联接应该这样做。就像是:

SELECT * FROM res r INNER JOIN sub s ON r.id = s.id WHERE regno LIKE '1DU12CS100';
另一答案

这只是一个开头(这里有太多的事情要做)但是对于初学者来说,你可以在开始时将你的SQL查询修改成这样的东西,因为batname似乎作为所有regno变量的开头存在

$sql = "SELECT regno as batname FROM myresult WHERE regno LIKE '{$regno}%'"; 

然后你可以把它变成一个变量,如$batname = $row['batname']

然后你可以使用$batname作为链接表之间数据的方法。但是,您需要做更多的事情,因为存在一些确实存在的字符串。所以你需要在$batname的某些地方识别特定的字符串,以确定它们的含义。这必须自行分解。最好创建一个新表来标识主题名称以匹配由此创建的字符串。

换句话说,您的脚本实际上只是一个开始。一旦你有了识别字符串中每个元素的方法(再次查找表会让你的生活变得更轻松),你将能够开始编写你的php脚本。

这是您可以使用的查找表的示例

    code    name
    ---     ----
    CS      Computer Science

等等(我很难说出这些代码发生了什么,但我告诉你它们的意思)。您应该为每件具有某些功能的部件提取此数据。

以上是关于如何从多个SQL表中获取值并在html / php表中显示?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 如何从 AJAX 调用中发布多个数组/json 值并在同一个 SQL 查询中运行它们?

从数据库中获取值并显示在 html 表中,包括 PHP

如何根据 Id 从多个表中获取值并根据 id 创建新表

如何从views.py 中获取值并在html 模板中使用它?

在列表中查找多个值并在新工作表中对它们进行排序

如何从数组中获取值并在zend框架工作中分配给视图