【发布时间】:2014-07-28 13:16:57
【问题描述】:
我想在表格中显示 srfno、datecreated、clientname 和 returneditem。 srfno、datecreated 和 clientname 来自 sales 表,而 returneditem 在 sales_item 表中。表通过 srfno 关联。我能够显示 srfno、日期和客户名称,但没有返回项目。 请找出我的代码中的错误和缺失。任何解释和帮助都可以。谢谢。 加载数据代码:
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、日期、客户名称和返回项目的代码。我在这里使用了一些 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>";
【问题讨论】:
-
你在哪里选择returnitem?
-
@echo_Me 在 sales_item 表
-
您在滥用 PDO - 即使在这里也应该使用参数化查询。鉴于连接键的常用类型,您可能不会在 this 实例中受到 SQL 注入攻击。你不应该再去追求
sales_item,因为它会出现在原始结果集中(也许只使用ORDER BY?)。而且我可能还会为client添加一个连接。哦,RIGHT JOIN很少使用 -LEFT (OUTER) JOIN倾向于使用,出于偏好,尽管您可能可以在这里使用常规的(INNER) JOIN... -
@Clockwork-Muse 我明白你所说的。我所做的是排除了获取 $retdesc 的过程。我刚刚使用 .$row['retdesc'] 调用了 $retdesc。谢谢!!!!!!