95315


MySQL Workbenchでは問題なく抽出できるのですが、PHPで実行するとSyntaxエラーが発生します。  
また、PHPでエラーとなったクエリーをMySQL Workbenchに張り付けるとやはり問題なく動作します。  
クエリーは以下となりますが、0件データも抽出したいためLeftJoinをしています。  
ご教示いただけますと幸いです。

[code]

    select distinct t1.value , ifnull(t2.count, 0) as count 
    from( select value FROM sa.tbl_textdata_attribute ta 
    inner join sa.tbl_textdata_header th on ta.header_id = th.id where ta.analysis_id = '1000' and th.name= '商品カテゴリ') as t1 
    left join( select value, count(*) as count from sa.TBL_TEXTDATA_ATTRIBUTE TA inner join sa.TBL_TEXTDATA_HEADER TH on TA.header_id = TH.id where TA.analysis_id = '1000' 
    and TH.name= '商品カテゴリ' and textdata_id in ( select textdata_id from sa.TBL_WORDVOLUME where delete_Flg = 0 and analysis_id = 1000 and ****条件が続く****) 
    group by textdata_id) group by value )as t2 on t1.value = t2.value order by t1.value
    
[/code]

phpのコードは以下です。  
クエリーを分割しているのは、middleだけ使うケースもあるためです。

[code]

        function getPositiveRate($aid, $category){
    
            if($category){
    
                $query_first = "
                select distinct t1.value , ifnull(t2.count, 0) as count
                from( select value FROM tbl_textdata_attribute ta 
                inner join tbl_textdata_header th on ta.header_id = th.id 
                where 
                ta.analysis_id = '".$aid."' and th.name= '".$category_name."') as t1
                left join(
                select value, count(*) as count from TBL_TEXTDATA_ATTRIBUTE TA
                inner join TBL_TEXTDATA_HEADER TH on TA.header_id = TH.id 
                where 
                TA.analysis_id = '".$aid."' and TH.name= '".$category."' and 
                textdata_id in (";
    
                $query_end = ") group by value )as t2 on t1.value = t2.value order by t1.value;";
            }
    
            $query_middle = "
            select textdata_id from TBL_WORDVOLUME
            where
            delete_Flg = 0 and analysis_id = ".$aid." and (
            *****条件が続く****
            )
            group by textdata_id";
    
    
            $sql = $query_first.$query_middle.$query_end;
    
            list($cnt, $res) = $this->db->DBrsSqlGet($sql);
    
            return $rtn;
        }
    
[/code]

PHPのエラーは以下となります。

[code]

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' at line 113 sql=[ select distinct t1.value ****クエリーが続く。
    
[/code]


CC BY-SA 4.0
2023-06-20T08:57:57.270
95311
2023-07-11T15:25:38.787
2023-06-21T01:09:42.060
3060
58803
question
php mysql
MySQL Workbenchで問題ないクエリーをPHPで実行すると構文エラーになります。


''でシンタックスエラーとなっているため、''が利用されている箇所はないのでしょうか。  
$query_middleの*****条件が続く****箇所も確認してみてください。

<https://dev.mysql.com/doc/refman/8.0/ja/string-literals.html>


CC BY-SA 4.0
2023-06-21T01:53:41.880
95315
2023-06-21T01:53:41.880
58081
95311
answer


コードを書く時、字下げはとても必要なことなので忘れないで下さい。字下げの標準を守るとコードが読みやすくなります。以下のリンクを参考にして下さい。

[https://courses.cs.washington.edu/courses/cse154/18sp/18sp-
data/documents/styleguide/sql/spacing-indentation-
sql.html#:~:text=Indentation%20for%20the%20CREATE%20TABLE%20statement%20should%20be%20consistent.,except%20for%20the%20last%20line](https://courses.cs.washington.edu/courses/cse154/18sp/18sp-
data/documents/styleguide/sql/spacing-indentation-
sql.html#:%7E:text=Indentation%20for%20the%20CREATE%20TABLE%20statement%20should%20be%20consistent.,except%20for%20the%20last%20line)).


CC BY-SA 4.0
2023-07-11T15:25:38.787
95567
2023-07-11T15:25:38.787
58988
95311
answer