数据库显示数据客户端有些问题
问题描述:
我正在构建此CRM,并且在编写查询以显示表数据客户端时遇到了一些奇怪的情况。我很难理解如何解决这个问题......在遇到这个问题之前,我在另一个表中删除了一个外键,因为我想修改第一行,现在我想我会付出代价,我不知道该怎么去做...客户端数据显示如何真的不匹配数据库中的内容...反正我准备好去吃活...我是一个NOOB我正在学习困难的方式,我也写PHP就像我是一个noob,所以我的代码看起来不太好用,但它适用于我,这就是我的理解。所以,如果您有任何提示如何解决这个问题那简直太好了......数据库显示数据客户端有些问题
的问题是:该ID行客户端不会返回一个数据库中,谁是发送邮件的名字to与数据库中的不匹配。我怀疑它是与我从中删除外键的ID ...
客户端
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问题来测试这一点。根据文档外键允许重复。我注意到有一个新的id在雇员表中生成,它解释了重复项。根据数据库的设计,这是正常的行为。外键约束id(它是user.id = employees.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>
'$ resultsent'从哪里来? – David
@David:我用它编辑了我的问题。我忘了把它放在那里。抱歉。 –
'“INNER JOIN员工ON sentmessages.employee_id = employees.employee_id”' - 根据数据库中的图像,*是*没有'sentmessages.employee_id',这个查询如何工作? – David