Php 数据库显示数据客户端有问题

Php 数据库显示数据客户端有问题,php,mysql,foreign-keys,Php,Mysql,Foreign Keys,我正在构建这个CRM,在编写查询以在客户端显示表数据时遇到了一种奇怪的情况。我很难理解如何修复它。。。在遇到这个问题之前,我确实删除了另一个表中的外键,因为我想修改主行,现在我想我付出了代价,我不知道该怎么办。。。客户端数据显示方式与数据库中的内容不匹配。。。不管怎样,我已经准备好被活活吃掉了。。。我是一个NOOB,我正在努力学习,我也像我一样编写PHP,所以我的代码看起来确实是noobish,但它对我来说是有效的,这就是我对它的理解。所以,如果你有任何建议如何解决这将是伟大的 问题如下:ID行

我正在构建这个CRM,在编写查询以在客户端显示表数据时遇到了一种奇怪的情况。我很难理解如何修复它。。。在遇到这个问题之前,我确实删除了另一个表中的外键,因为我想修改主行,现在我想我付出了代价,我不知道该怎么办。。。客户端数据显示方式与数据库中的内容不匹配。。。不管怎样,我已经准备好被活活吃掉了。。。我是一个NOOB,我正在努力学习,我也像我一样编写PHP,所以我的代码看起来确实是noobish,但它对我来说是有效的,这就是我对它的理解。所以,如果你有任何建议如何解决这将是伟大的

问题如下:ID行客户端不返回数据库中的ID行,并且消息发送到的对象的名称与数据库中的名称不匹配。我怀疑这与我删除外键的id有关

数据库端| sentmessages表

客户端

mailmessages.php

 <!-- 
================================================================
Sent Messages 
================================================================
-->
<?php

$perpage=5;
if(isset($_GET['page'])){
    $page=$_GET['page'];
}
else{
    $page=1;
}  



$offset=($page-1)*$perpage;
$sqlsent="SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.toEmployee_id=employees.employee_id WHERE username = '$user_check' LIMIT ".$offset.",".$perpage."";
$resultsent=mysqli_query($db,$sqlsent);
?>
       <table id="table" class="sortable rwd-table table table-striped table-hover tablesorter " >

      <thead style="cursor:pointer;">
          <th>ID</th>
        <th>Date Sent</th>
          <th>To</th>
        <th>Subject</th>
            <th style='visibility: hidden;'>Message</th>
     </thead>

     <tbody>
    <?php while ($sent = mysqli_fetch_assoc($resultsent)) {?>
      <tr>
           <td data-th="ID"><?=$sent['id'];?></td>
              <td data-th="Date Sent"><?=$sent['time'];?></td>

              <?php $toEmployee_idfnln ="SELECT first_name, last_name FROM employees INNER JOIN sentmessages ON employees.employee_id=sentmessages.toEmployee_id WHERE username=employees.username";$resulfnln=mysqli_query($db,$toEmployee_idfnln);$displaynames = $resulfnln->fetch_assoc();?>
        <td data-th="To"><?=$displaynames['first_name'];?> <?=$displaynames['last_name'];?></td>

        <td data-th="Subject"><?=$sent['subject'];?></td>
        <td data-th="Message"><i class="fa fa-eye optionbox" aria-hidden="true"></i> <i class="fa fa-trash optionbox" aria-hidden="true"></i></td>
      </tr>
        <?php };?>
     </tbody>
     <tfoot></tfoot>


    </table>


           <div class='col-md-6 pull-left'>
               <p>Total : 
                   <?php $sqlsentmsg="SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.toEmployee_id=employees.employee_id WHERE username = '$user_check'"; $resultsentmsg=mysqli_query($db,$sqlsentmsg); $rowcountmsg=mysqli_num_rows($resultsentmsg);echo $rowcountmsg;?>

                    Sent Messages</p>

            </div>

总数:

好的,我的代码开始工作了。事实证明,除了查询之外,根本没有什么是错误的。外键不是问题所在。我通过重新加载原始模式对此进行了测试,并遇到了相同的重复id问题。根据文档,外键允许重复。我注意到在employee表中生成了一个新id,它解释了重复项。根据数据库的设计方式,这是正常的行为。外键约束id(即user.id=employees.id)接管正常的行id,该行id应显示如下1-2-3-4-5。这是我需要在用户表上修复的东西

现在,由于名称显示不正确,这与查询不理解显示谁有关。我必须用魔法让它明白如下:

我不得不写:

  $toEmployeeidQ = mysqli_query($db,"SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.fromEmployee_id=employees.employee_id WHERE username = '$user_check'");
  $rowemployeeid = mysqli_fetch_array($toEmployeeidQ,MYSQLI_ASSOC);
  $session_toEmployeeid = $rowemployeeid['toEmployee_id'];
 <td data-th="To">   
              <?php $toEmployee_idfnln = "SELECT first_name, last_name FROM `employees` INNER JOIN sentmessages ON employees.employee_id=sentmessages.toEmployee_id WHERE employees.employee_id='$session_toEmployeeid'";$resulfnln=mysqli_query($db,$toEmployee_idfnln);$displaynames = $resulfnln->fetch_assoc();?>
            <?php echo $displaynames['first_name'];?>  <?php echo $displaynames['last_name'];?>

      </td>
然后在查询中传递变量以获取名称:

  $toEmployeeidQ = mysqli_query($db,"SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.fromEmployee_id=employees.employee_id WHERE username = '$user_check'");
  $rowemployeeid = mysqli_fetch_array($toEmployeeidQ,MYSQLI_ASSOC);
  $session_toEmployeeid = $rowemployeeid['toEmployee_id'];
 <td data-th="To">   
              <?php $toEmployee_idfnln = "SELECT first_name, last_name FROM `employees` INNER JOIN sentmessages ON employees.employee_id=sentmessages.toEmployee_id WHERE employees.employee_id='$session_toEmployeeid'";$resulfnln=mysqli_query($db,$toEmployee_idfnln);$displaynames = $resulfnln->fetch_assoc();?>
            <?php echo $displaynames['first_name'];?>  <?php echo $displaynames['last_name'];?>

      </td>


$resultsent
来自哪里?@David:我用它编辑了我的问题。我忘了把它放在那儿了。抱歉。
“在sentmessages上内部加入员工。员工id=员工。员工id”
-根据数据库中的图像,没有
sentmessages.employee\u id
,这个查询是如何工作的?@David:这也是我的错误,我忘了在这里编辑它。这些查询不会引发任何错误。我都在phpMyAdmin试过了。