【问题标题】:Running a Mysql query based on result of another mysql query?根据另一个 mysql 查询的结果运行 Mysql 查询?
【发布时间】:2017-07-18 15:16:24
【问题描述】:

我有一个页面显示我的客户工作历史,但我想显示工作付款是否已结算。

首先在页面上确定 selectedcustID,然后运行查询以显示表中的所有作业。

$query = "SELECT * FROM jobs WHERE customerID = '$selectedcustID'   ORDER BY date_auto";
$result = mysql_query($query, $connection) or die(mysql_error());

for ($i = 0; $i < mysql_num_rows($result); $i++){
  $selectedjobID = mysql_result($result, $i, "jobID");
  $date = mysql_result($result, $i, "date_auto");
  $formatdate =  date("d/m/Y", $date);
  $status = mysql_result($result, $i, "status");
  $notes = mysql_result($result, $i, "notes");

  echo '<tr bgcolor="'.$bgcolor; ......
}

问题在于,要获得有关工作是否已开具发票的详细信息,我需要查看另一个表。

这是两张桌子

但每行的jobID是根据上面的查询结果确定的。

我尝试在 for 循环中运行一个新查询,但似乎无法正常工作。

有没有更好的方法来解决这个问题?

【问题讨论】:

  • 你怎么知道它是付费的?意味着,您在付费列中存储了什么值?
  • 请不要在 php 中使用 mysql_ 函数。它们已被弃用并且存在安全风险!
  • `选择工作。*从工作留下的jobs.jobsid = invoices.jobid where customerid = ?循环中的查询也会降低您的应用性能
  • 使用 PDO 或 mysqli 函数。 mysql 功能已贬值,存在安全风险。
  • 您可以通过连接两个表使用单个 SQL 查询获得结果。你怎么知道工作报酬是否已经结清? invoiceStatus = ?

标签: php mysql loops


【解决方案1】:

您可以在 SQL 查询中连接这两个表

$query = "SELECT * FROM jobs INNER JOIN invoices ON jobs.jobID=invoices.jobID WHERE jobs.customerID = '$selectedcustID'   ORDER BY date_auto";

【讨论】:

  • 谢谢这是完美的。
  • 实际上我现在需要的是 LEFT JOIN,因为我需要工作中的一切
【解决方案2】:

在您的 SQL 查询中加入表:

SELECT 
    a.*,
    b.*
FROM jobs a
JOIN invoices b
ON b.jobID = a.jobID
WHERE customerID = '$selectedcustID'
ORDER BY date_auto

请务必使用 mysqli 函数。这将需要一些调整,但值得,因为 mysql 函数已被贬值,并且不在当前版本的 PHP 中。

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2017-11-14
    • 2012-11-29
    • 1970-01-01
    • 2012-06-19
    • 2018-09-12
    相关资源
    最近更新 更多