dpgjci27392 2014-06-26 08:15
浏览 36
已采纳

无法让我的SQL查询与PHP一起使用

I am using a query to get data organized and it works well with ORACLE SQL DEVELOPER, though when I am trying to get it in my PHP script, it returns an error.


My php file:

<?php
    include 'connexion.php';
    //


    $sql  = oci_parse($conn, 'select c.* from ( 
    select 
    b.EB_DOMAINE_NOM,b.EB_INDICATEUR_LIBELLE,b.EB_RESULTAT_VALEUR as EB_RESULTAT_VALEUR_m,
    b.EB_RESULTAT_INSERT_DATE as EB_RESULTAT_INSERT_DATE_m,
    b.EB_INDICATEUR_NUM, 
    EB_RESULTAT_DTM.VALEUR as valeur_m1,(EB_RESULTAT_DTM.VALEUR-b.EB_RESULTAT_VALEUR) as diff_m1_m,
    rank() over (partition by EB_RESULTAT_DTM.X_EB_INDICATEUR_DTM_NUM, to_char(EB_RESULTAT_DTM.INSERT_DATE,'yyyymm') 
    order by to_char(EB_RESULTAT_DTM.INSERT_DATE,'yyyymmdd') asc) as rang
    from (
    select A.*  
    from (
    SELECT EB_DOMAINE_DTM."NOM" AS EB_DOMAINE_NOM,
             EB_INDICATEUR_DTM."LIBELLE" AS EB_INDICATEUR_LIBELLE,
             EB_RESULTAT_DTM."VALEUR" AS EB_RESULTAT_VALEUR, 
             EB_RESULTAT_DTM."INSERT_DATE" AS EB_RESULTAT_INSERT_DATE,
             EB_INDICATEUR_DTM."INDICATEUR_NUM" AS EB_INDICATEUR_NUM,
             rank() over (partition by EB_INDICATEUR_DTM.INDICATEUR_NUM,to_char(EB_RESULTAT_DTM.INSERT_DATE,'yyyymm') order by to_char(EB_RESULTAT_DTM.INSERT_DATE,'yyyymmdd') asc) as rang,
             to_char(EB_RESULTAT_DTM.INSERT_DATE,'yyyymm') as MOIS_M
        FROM "COMPTEUR_OWNER"."EB_DOMAINE_DTM" EB_DOMAINE_DTM
             INNER JOIN
             "COMPTEUR_OWNER"."EB_INDICATEUR_DTM" EB_INDICATEUR_DTM
                ON EB_DOMAINE_DTM."EB_DOMAINE_DTM_NUM" =
                      EB_INDICATEUR_DTM."X_EB_DOMAINE_DTM_NUM"
             INNER JOIN
             "COMPTEUR_OWNER"."EB_RESULTAT_DTM" EB_RESULTAT_DTM
                ON EB_INDICATEUR_DTM."INDICATEUR_NUM" =
                      EB_RESULTAT_DTM."X_EB_INDICATEUR_DTM_NUM"
       WHERE     EB_INDICATEUR_DTM."INDICATEUR_NUM" = 106
             AND EB_RESULTAT_DTM."INSERT_DATE" BETWEEN ADD_MONTHS (SYSDATE, -9) 
                                                   AND SYSDATE
    ) a where a.rang=1
    ) b left outer join COMPTEUR_OWNER.EB_RESULTAT_DTM EB_RESULTAT_DTM 
    on EB_RESULTAT_DTM.X_EB_INDICATEUR_DTM_NUM =b.EB_INDICATEUR_NUM 
    AND TO_CHAR(EB_RESULTAT_DTM.INSERT_DATE,'YYYYMM')=TO_CHAR(ADD_MONTHS(TO_DATE(b.MOIS_M,'YYYYMM'),1),'YYYYMM') 
    ) c where c.rang=1
    order by TO_CHAR(c.EB_RESULTAT_INSERT_DATE_m,'YYYYMM') asc

    ');

    oci_execute($sql);

?>

I get an error because of the 'YYYYMM'. Or if I fix it I get an error with A.RANG etc..


While in Oracle I get what I want:

http://i.imgur.com/2snvnWu.png


Is there a way to get the same result as in Oracle?

  • 写回答

1条回答 默认 最新

  • duanshang3230 2014-06-26 08:18
    关注

    You are using single quotes in your query. the single quotes is what is breaking php. n00b mistake. All you have to do is wrap your sql statement in double quotes, not single quotes. Or alternatively escape the single quote with a \

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)