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