duangejian6657 2013-11-18 23:52
浏览 23
已采纳

参数号无效,联合选择

I really can't spot my mistake in here.

$query = <<<'BUM'
(
    SELECT ca.id, ca.name, ca.slug, ca.record_date, 2 AS complete, 0 AS numbers
    FROM  `cms_articles_article` ca
    WHERE record_date
    BETWEEN ':y_1 - :m_1 -01'
    AND ':y_2 - :m_2 -31'
    GROUP BY ca.id
    LIMIT 0, 3)
UNION ALL (
    SELECT ca.id, ca.name, ca.slug, ca.record_date, 1 AS complete, COUNT( ca.id ) AS numbers
    FROM  `cms_articles_article` ca
    WHERE YEAR( record_date ) = :y_3
    GROUP BY MONTH( record_date )
    )
UNION ALL (
    SELECT ca.id, ca.name, ca.slug, ca.record_date, 0 AS complete, COUNT( ca.id ) AS numbers
    FROM  `cms_articles_article` ca
    GROUP BY YEAR( record_date )
    )
ORDER BY 
complete ASC, 
record_date DESC
BUM;

$stmt = $db
->prepare($query)
;
$year = 2013;
$month = 12;
$stmt->execute(array(
    ':y_1' => $year, 
    ':y_2' => $year, 
    ':y_3' => $year, 
    ':m_1' => $month,
    ':m_2' => $month,
    ));

I took into account the fact you can't reuse named parameter. If you remove the :y_3 from query (and execution), it will run correctly. Any help is appreciated.

  • 写回答

2条回答 默认 最新

  • duanjianhe1388 2013-11-19 01:04
    关注

    You cannot use params inside strings.

    ':y_2 - :m_2 -31' -- is just a string, 0 parameters

    Your whole query has only 1 parameter.

    , :y_2 - :m_2 -31 -- is expression, 2 parameters

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错