显示2个表格中的数据

时间:2014-07-28 13:16:57

标签: php mysql sql pdo

我想在表格中显示srfno,datecreated,clientname和returneditem。 srfno,datecreated和clientname来自sales表,而returnitem在sales_item表上。表格通过srfno相关。我能够显示srfno,date和clientname但不能返回。 请在我的代码中找到错误和缺失的内容。任何解释和帮助都可以。谢谢。 加载数据的代码:

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,date,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>";

2 个答案:

答案 0 :(得分:0)

看起来Echo_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";

答案 1 :(得分:0)

对于可能遇到此问题的用户,您不需要创建另一个查询来获取另一个表的值,尤其是在您使用联接的情况下。使用join将使您的生活更轻松。只需通过。​​$ row [&#39; fieldname&#39;]调用变量即可! :)感谢那位帮助我意识到我的代码有什么问题的人。谢谢你!