下面的Select过去常与带有for循环的Mysql_Select配合使用,但是由于更新为mysqli_connect并使用while循环,我遇到了麻烦。
$query =
"SELECT *
FROM
jobs
LEFT JOIN invoices ON jobs.jobID=invoices.jobID
WHERE jobs.customerID = '$selectedcustID'
ORDER BY date_auto DESC";
$result = mysqli_query($connection, $query) or die(mysqli_error());
if(mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
$selectedjobID = $row["jobID"];
$date = $row["date_auto"];
$formatdate = date("d/m/Y", $date);
$status = $row["status"];
$notes = $row["notes"];
$invoiceStatus = $row["invoiceStatus"];
$invoicePaid = $row["paid"];
$invoiceNumber = $row["invoiceID"];
$formatinvoiceNumber = sprintf("%05d", $invoiceNumber);
公用参数是jobID
和jobs
表中的invoices
列,但是由于发票直到被提现才存在,因此jobID
在我的作业的php输出列表现在为空。我认为原因是它使用的是jobID的发票版本(即NULL
),而不是作业的版本。
我尝试了各种方法来解决此问题,但是却绕圈而行。我认为这是从作业中选择SELECT *和SELECT jobID AS的一种情况,但我不确定语法是否正确。
任何帮助将不胜感激。
答案 0 :(得分:2)
由于发票直到被提出才存在,所以我的php输出作业列表中的jobID显示为空白
不要使用SELECT *
:jobID
的两端都有一个LEFT JOIN
字段,最后您会选择错误的字段(即invoices.jobID
,即尚未开具发票的NULL
。
您要明确选择所需的字段,例如:
SELECT
jobs.jobID,
...
FROM
jobs
LEFT JOIN invoices ON jobs.jobID = invoices.jobID
WHERE jobs.customerID = '$selectedcustID'
ORDER BY date_auto DESC