Php 显示2个表中的数据
我想在表中显示srfno、datecreated、clientname和returneditem。srfno、datecreated和clientname来自sales表,returneditem位于sales\u item表中。表格通过srfno进行关联。我可以显示srfno、date和clientname,但不能返回editem。 请找出我的代码中的错误和遗漏。任何解释和帮助都可以。谢谢 加载数据的代码:Php 显示2个表中的数据,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我想在表中显示srfno、datecreated、clientname和returneditem。srfno、datecreated和clientname来自sales表,returneditem位于sales\u item表中。表格通过srfno进行关联。我可以显示srfno、date和clientname,但不能返回editem。 请找出我的代码中的错误和遗漏。任何解释和帮助都可以。谢谢 加载数据的代码: if(isset($_GET['sn'])){ $ppid = $_GET['
if(isset($_GET['sn'])){
$ppid = $_GET['sn'];
$sqlLoader="Select sales.srfno, sales.clientid, sales.datecreated,
sales_item.retdesc
from sales
RIGHT JOIN sales_item ON sales.srfno==sales_item.srfno";
$resLoader=$con->prepare($sqlLoader);
$resLoader->execute(array($ppid));
while($rowLoader = $resLoader->fetch(PDO::FETCH_ASSOC)){
$sn= $rowLoader['srfno'];
$dcr= $rowLoader['datecreated'];
$cid=$rowLoader['clientid'];
$retid=$rowLoader['srfno'];
$retdesc=$rowLoader['retdesc'];
这是我用来显示srf、日期、clientname和返回项目的代码。我在这里使用一些pdo:
$sql="Select sales.srfno, sales.datecreated, sales.clientid, sales_item.retdesc
from sales
RIGHT JOIN sales_item ON sales.srfno=sales_item.srfno";
$res=$db->prepare($sql);
$res->execute();
$str="<div><table cellpadding='0' cellspacing='0' border='0' class='display' id='tbl' class='jtable' align='center'>";
$str.="<thead><tr><th width='250px'>SRF No</th><th>Date Created</th><th align='center'>Client Name</th><th>Returned Item</th><th></th><th></th></tr></thead><tbody>";
while($row = $res->fetch(PDO::FETCH_ASSOC))
{
$str.="<tr><td><center>".$row['srfno']."</center></td>";
$str.="<td align='center'>".$row['datecreated']."</td>";
$sclientid=$row['clientid'];
$cli="Select name from client where clientid=$sclientid";
$client=$db->prepare($cli);
$client->execute();
while($clie= $client->fetch(PDO::FETCH_ASSOC))
{
$clientname=$clie['name'];
}
$item=$row['srfno'];
$itemret="Select retdesc from sales_item where srfno=$item";
$itemreturn=$db->prepare($itemret);
$itemreturn->execute();
while($return=$itemreturn->fetch(PDO::FETCH_ASSOC))
{
$retdesc=$return['retdesc'];
}
$str.="<td align='center'>".$clientname."</td>";
$str.="<td align='center'>".$retdesc."</td>";
$sql=“选择sales.srfno、sales.datecreated、sales.clientid、sales\u item.retdesc
来自销售
在sales.srfno=sales\u item.srfno上右键连接sales\u item”;
$res=$db->prepare($sql);
$res->execute();
$str=”“;
$str.=“SRF节点状态CreatedClient名称返回项”;
while($row=$res->fetch(PDO::fetch_ASSOC))
{
$str.=''.$row['srfno'].'';
$str.=''.$row['datecreated'].'';
$sclientid=$row['clientid'];
$cli=“从客户端选择名称,其中clientid=$sclientid”;
$client=$db->prepare($cli);
$client->execute();
而($clie=$client->fetch(PDO::fetch_ASSOC))
{
$clientname=$clie['name'];
}
$item=$row['srfno'];
$itemret=“从销售项目中选择retdesc,其中srfno=$item”;
$itemreturn=$db->prepare($itemret);
$itemreturn->execute();
而($return=$itemreturn->fetch(PDO::fetch_ASSOC))
{
$retdesc=$return['retdesc'];
}
$str.=“..$clientname.”;
$str.=“.$retdesc.”;
看起来Echo\u me的内容是正确的。您没有在查询中选择返回的项目:
$sql="Select sales.srfno, sales.datecreated, sales.clientid, sales_item.retdesc
from sales
RIGHT JOIN sales_item
ON sales.srfno=sales_item.srfno";
将该项添加到查询中
$sql="Select sales.srfno, sales.datecreated, sales.clientid, sales_item.retitem, sales_item.retdesc
from sales
RIGHT JOIN sales_item
ON sales.srfno=sales_item.srfno";
对于那些可能遇到此问题的人,您不需要创建另一个查询来获取另一个表的值,尤其是在使用联接的情况下。使用联接将使您的工作更轻松。只需通过调用变量。$row['fieldname']就这样!!:)感谢帮助我认识到我的代码有什么问题的人。谢谢你!你在哪里选择returneditem?@echo\u me at sales\u item Table你误用了PDO-即使在这里你也应该使用参数化查询。在这种情况下,考虑到连接键的常见类型,你可能不会受到SQL注入的攻击。你应该dn不需要再次追踪
sales\u项目
,因为它会出现在原始结果集中(可能只是使用orderby
?)。我可能也会为客户端
添加一个联接。哦,右联接
很少使用-左(外部)JOIN
通常被用作首选项,尽管您可能可以在这里使用常规的(内部)JOIN
。@Clockwork Muse我明白了您所说的。我所做的是排除了获取$retdesc的过程。我只是使用$row['retdesc'调用$retdesc]。谢谢!!!!!@echo\u Me退回的商品是sales\u item.retdesc。它是一样的,我没有时间叫它