使用GET进行MySQL查询

时间:2019-04-04 18:09:31

标签: php sql

您好,下面是一个无法正常运行的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()) {?>

1 个答案:

答案 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

这使它可以查找没有匹配发票的客户。