簡體   English   中英

與mysql兩表數據交叉匹配,表中數值顯示使用PHP mySql

[英]Data cross matching with mysql two tables, value display in table using PHP mySql

我在使用 php 和 mysql 時遇到了一些問題,我什至不知道如何正確地問這個問題,這似乎很復雜。 不過,如果有人可以幫助我,我將非常感激。

我有兩個表(allunit.sql)

id - unit_name
12       -   MIS
14       -   MIT
15       - ENG

當有人從瀏覽器(unit_id)單擊注冊按鈕時,將存儲在注冊表中。 如果有人注冊到該單元,按鈕將顯示(已注冊),而不是它會顯示“注冊”注冊。sql

enroll_id - unit_id
1         - 12
2         - 14

我正在使用這個查詢

$unit = SELECT * FROM allunit;

$enroll = SELECT * FROM enrollment;

$row_enroll = mysqli_fetch_assoc($enroll);

while($row = mysqli_fetch_assoc($unit)) {
    if($row['id']==$row_enroll['unit_id']){
        $button = 'Already enrolled';
    }else{
        $button = 'Enroll';
    }
?>

<tr>
     <td><?php echo $row['id']; ?></td>
            <td><?php echo $row['unit_name']; ?></td>

           <td><?php echo $button; ?></td>
</tr>
<?php } ?>

如果我添加一個單元按鈕更改為該單元的“已經注冊”,但如果我添加多個,仍然只有一個按鈕更改。 其他保持相同的“注冊”。

我知道我的問題很混亂,希望你能理解。 急需幫助。 謝謝

我在您的代碼中看到了兩個問題:

  1. mysqli_fetch_assoc()在 MySQL 結果上調用,而不是查詢。 您需要先調用mysqli_query() 您可以在文檔中看到一個示例: https://www.php.net/manual/en/mysqli-result.fetch-assoc.php
  2. 當你得到一個結果時,比如$row_enroll ,它是一個行的集合,所以你不能直接將它與列一起使用,即$row_enroll['unit_id']不會給你任何東西。

最后,看起來像這樣的兩個獨立數據集之間的比較對您來說不會很好,至少在當前代碼中是這樣。 考慮使用JOIN只返回一個數據集。

首先,您必須告訴數據庫運行您的查詢,將查詢放在文本字符串中是不夠的。 這是完成的,在這種情況下使用query()方法。

其次,由於您想為每個單元處理一次注冊,因此至少將注冊卸載到一個數組中會很有用,這樣它就可以輕松重用

// assuming you have a connection and its in $con

$sql    = 'SELECT * FROM allunit';
$units   = $con->query($sql);

$sql    = 'SELECT unit_id FROM enrollment';
$res2   = $con->query($sql);
// make an array of just the enrolment id's as that all you need
// so we can use in_array() later to do the test for are you already enrolled
$enrols = [];
while ($row = $res2->fetch_assoc()){
    $enrols[] = $row['unit_id'];
}

while ($unit = $units->fetch_assoc() ) {
    if ( in_array($unit['id'], $enrols) ) {
        $button = 'Already enrolled';
    }else{
        $button = 'Enroll';
    }

?>
<tr>
    <td><?php echo $unit['id']; ?></td>
    <td><?php echo $unit['unit_name']; ?></td>
    <td><?php echo $button; ?></td>
</tr>
<?php 
} // endwhile
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM