做正在尝试的事情的正确方法是什么?发现检查IN完成了我需要的工作。
$hierarquia = implode(",", $_POST['hierarquia']);
// Show: 3,4
(
SELECT planoDeConta FROM `financ_receita`
WHERE data BETWEEN '2011-01-01' AND '2013-12-30'
planoDeConta IN ($hierarquia)
) UNION ALL (
SELECT planoDeConta FROM `financ_despesa`
WHERE data BETWEEN '2011-01-01' AND '2013-12-30'
planoDeConta IN ($hierarquia)
)
答案 0 :(得分:1)
您遇到语法错误,因为在每个查询中第二个条件之前缺少一个连词:
(
SELECT planoDeConta
FROM `financ_receita`
WHERE data BETWEEN '2011-01-01' AND '2013-12-30' AND
planoDeConta IN ($hierarquia)
) UNION ALL (
SELECT planoDeConta
FROM `financ_despesa`
WHERE data BETWEEN '2011-01-01' AND '2013-12-30' AND
planoDeConta IN ($hierarquia)
)
这应该有效,因为您正在“查询字符串”级别对$hierarquia
进行变量替换。如果您只是将值输入为字符串,则无效。
答案 1 :(得分:0)
必须引用这些值。为此,只需使用以下代码:
$hierarquia2 = sprintf( "'%s'", implode( "','", $_POST['hierarquia'] ) );
谢谢大家的帮助。