2

我正在为客户开发一个工单系统。Client数据通过管理面板输入,例如CategoryDescription。建立数据库以记录UpdatedCreated信息。

最初,Category输入的是(数据库表是VARCHAR),当查询数据库时,所有信息都会正确显示在主页上。

查询:

$sql = 'SELECT *,
    DATE_FORMAT(wo_updated,"%m/%d/%Y") AS updated,
    DATE_FORMAT(wo_created, "%m/%d/%Y") AS created
    FROM work_orders
    ORDER BY wo_id ASC';
$result = $conn->query($sql) or die(mysqli_error($conn));
$numRows = $result->num_rows;

这完美地显示了Client, Description,Category以及UpdatedCreated信息,这两个显示10/07/2013为例如。

然后,我在管理面板中添加了一个部分,允许输入类别并将其存储在数据库中,以便在输入新的工作订单时,您可以从预设的类别列表中进行选择,以使事情看起来流畅和一致。

这是新的查询,没有 DATE_FORMAT 代码:

$sql = 'SELECT *, cat_name
    FROM work_orders INNER JOIN categories
    ON work_orders.wo_category = categories.cat_id
    ORDER BY wo_id ASC';
$result = $conn->query($sql) or die(mysqli_error($conn));
$numRows = $result->num_rows;

这完美地工作,显示ClientDescriptionCategory现在从现在的数据库表中Category调用)。categoriesINT

但是您会注意到,我在第二个查询中没有DATE_FORMAT-ted 代码,因为我每次尝试将两者结合起来都会导致语法错误。我可以做一个或另一个,但我还不能将显示DATE_FORMAT-tedUpdated和表中Created信息的两个查询与表中的信息work_orders结合起来。cat_namecategories

我已经尝试过各种 JOIN 命令的子查询和各种尝试,但到目前为止,我仍然无法克服 MySQLi 语法错误。显然,这里有一些东西我需要学习,经过几个小时的反复试验和大量研究,我被困住了。任何帮助解决这个问题,这可能很简单,将不胜感激。谢谢!

更新:

这是我尝试过的一种导致语法错误的方法:

$sql = 'SELECT *, cat_name
    DATE_FORMAT(wo_updated,"%m/%d/%Y") AS updated,
    DATE_FORMAT(wo_created, "%m/%d/%Y") AS created
    FROM work_orders INNER JOIN categories
    ON work_orders.wo_category = categories.cat_id
    ORDER BY wo_id ASC';
$result = $conn->query($sql) or die(mysqli_error($conn));
$numRows = $result->num_rows;

进一步更新:

我希望我能说缺少的逗号以前没有咬过我,缺少的逗号是罪魁祸首!谢谢@SergeyRonin、@denlau、@JMS786,你对逗号的看法是正确的。也感谢代码建议,我不知道谁给了正确的答案,因为你们都知道了。

4

3 回答 3

2
SELECT 
    wo.*, 
    c.cat_name,
    DATE_FORMAT(wo.`wo_updated`,"%m/%d/%Y") AS updated,
    DATE_FORMAT(wo.`wo_created`, "%m/%d/%Y") AS created
FROM work_orders wo
INNER JOIN categories c ON wo.`wo_category` = c.`cat_id`
ORDER BY wo.`wo_id` ASC

此外,在您的代码中,您在 之后错过了逗号cat_name,所以这可能也是您有错误的原因。

于 2013-10-08T03:29:16.367 回答
2

您在第一行的“cat_name”之后缺少一个逗号。您的查询应如下所示:

    SELECT 
        w.wo_updated as wo_updated,
        w.wo_created as wo_updated,
        c.cat_name as cat_name,
        DATE_FORMAT(w.wo_updated,"%m/%d/%Y") AS updated,
        DATE_FORMAT(w.wo_created, "%m/%d/%Y") AS created
    FROM 
        work_orders w
    INNER JOIN 
        categories c
        ON 
            w.wo_category = c.cat_id
    ORDER BY 
        w.wo_id ASC

好吧,我给这些表格起了一些更短的名字——如果你想使用它,你可以打电话。此外,我在 SELECT 语句中明确调用了我需要的字段。这是由于这样的想法,即您应该只获得所需的准确信息。:)

希望这可以帮助。

于 2013-10-08T03:29:50.450 回答
1

您错过了 cat_name 和 DATE_FORMAT 之间的逗号“,”...

于 2013-10-08T03:34:34.167 回答