我正在尝试创建一个查询,该查询将基于不同的HTML下拉选择来过滤表。我有5个单独的下拉菜单,每当进行选择时,该值就会传递到查询中(并存储到清除之前),该查询将填充页面上的数据。但是,此查询仅在所有选择均完成后才显示数据。我也没有看到任何错误。有人可以向我解释为什么会发生这种情况,并提供解决方案,无论选择了多少下拉列表,它都可以在哪里显示数据?
LSSupportsOpeningDocumentsInPlace = YES
答案 0 :(得分:4)
检查变量的长度而不是字段的长度
代替
WHERE ([Collector Name] = '$q' OR datalength([Collector Name]) = 0)
应该是:
WHERE ([Collector Name] = '$q' OR datalength('$q') = 0)
^^^^
答案 1 :(得分:0)
我不熟悉php,但对于sql,我认为您首先需要检查变量是否不为null,然后使用它,也许在您的php代码中,如果未选择该值,则可以将其默认为null。
SELECT
[Customer]
,[Collector Name]
,[Bill Date]
,[Days Until Next Action]
,[Next Action]
,[Next Bill Date]
,[Billed Status]
,[Billed Amount]
,[Total Current Balance]
,CAST([Payment Due Date] AS DATE) AS [Payment Due Date]
,[Notes]
,[Payment Status]
,[Line Status]
FROM [Test_Spec_Bill]
WHERE (
('$q' IS NOT NULL
AND [Collector Name] = '$q')
OR DATALENGTH([Collector Name]) = 0
)
AND (('$date' IS NOT NULL
AND [Date Group - Filter] = '$date')
OR DATALENGTH([Date Group - Filter]) = 0
)
AND (('$val' IS NOT NULL
AND [Billed Status] = '$val')
OR DATALENGTH([Billed Status]) = 0
)
AND (('$rep' IS NOT NULL
AND [Parent Report Code] = '$rep')
OR DATALENGTH([Parent Report Code]) = 0
)
AND (('$group' IS NOT NULL
AND [Balance Group - Filter] = '$group')
OR DATALENGTH([Balance Group - Filter]) = 0
)
答案 2 :(得分:0)
logs
永远不会将NULL值评估为零,因为对于$ git submodule init
$ git submodule update --remote
值,DATALENGTH = 0
返回NULL
。您可以在发送查询之前处理DATALENGTH
个值,或者像这样使用NULL
简单地评估NULL
的情况为真。
NULL