MySQL - 在select中使用数组

时间:2013-12-30 12:56:02

标签: php mysql sql arrays

做正在尝试的事情的正确方法是什么?发现检查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)

)

2 个答案:

答案 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'] ) );

谢谢大家的帮助。