您好,下面是一个无法正常运行的sql查询。 下面的查询应显示当前所选客户的1张发票。但是不知何故,我无法使此查询像下面所示那样工作。
itemNames
echo sql结果:
<?php
$id = (ISSET($_GET['id'])) ? intval($_GET['id']):0;
$clientnumber= (ISSET($_GET['clientnumber'])) ? intval($_GET['clientnumber']):0;
$sql = "SELECT *
FROM customers AS a
inner join invoices AS b on a . '$clientnumber' = b . '$clientnumber'
and a . '$id' != b . '$id'";
$result = $conn->query($sql) or die(mysql_error());
$query=getenv(QUERY_STRING);
parse_str($query);
?>
<?php while ($row = $result->fetch_assoc()) {?>
答案 0 :(得分:2)
尽管您应该使用准备好的语句,但我认为问题在于您需要检查“客户”表中的列是否与“发票”表中的列匹配,而不是要查找的值。我不确定这些列的名称,但是您匹配的发票是针对客户的,然后在WHERE子句中检查客户号是否是您想要的...
SELECT *
FROM customers AS a
inner join invoices AS b on a.clientnumber = b.clientnumber
and b.invoiceid = $id
where a.clientnumber = $clientnumber
要在没有ID的情况下工作,请尝试
SELECT *
FROM customers AS a
inner join invoices AS b on a.clientnumber = b.clientnumber
where a.clientnumber = $clientnumber
如果您的clientnumber列是一个字符字段...
where a.clientnumber = '$clientnumber'
如果仍然没有返回行,请尝试将内部联接更改为...
left join invoices AS b on a.clientnumber = b.clientnumber
这使它可以查找没有匹配发票的客户。