- 目次
- CHAPTER 2 フロント機能をカスタマイズする
- SECTION-2 商品詳細
- Tips 031 簡易ダウンロード販売をする
[応用編] 高度なダウンロード販売のカスタマイズをしようとするとSQLエラーが出て動かない
PostgreSQL環境で、p.108の■8「高度な設定」のカスタマイズを行うと、下記のSQLエラーが出力され失敗します。
- 出力されたエラー
-
SELECT * FROM dtb_order as do,dtb_order_detail as dod WHERE do.del_flg = 0 and do.order_id = dod.order_id and do.create_date > ? and dod.product_id = ? DB Error: syntax error SELECT * FROM dtb_order as do,dtb_order_detail as dod WHERE do.del_flg = 0 and do.order_id = dod.order_id and do.create_date > '2010-04-28' and dod.product_id = '5' [nativecode=ERROR: syntax error at or near "do" at character 28] /var/www/html/ec/html/download.php 33:LC_Page_Download->process /var/www/html/ec/data/class/pages/LC_Page_Download.php 85:SC_Query->select /var/www/html/ec/data/class/SC_Query.php 95:SC_DbConn->getAll /var/www/html/ec/data/class/SC_DbConn.php 164:DB_common->getAll /var/www/html/ec/data/module/DB/common.php 1610:DB_common->execute /var/www/html/ec/data/module/DB/common.php 959:DB_pgsql->simpleQuery /var/www/html/ec/data/module/DB/pgsql.php 338:DB_pgsql->pgsqlRaiseError /var/www/html/ec/data/module/DB/pgsql.php 786:DB_common->raiseError /var/www/html/ec/data/module/DB/common.php 1853:PEAR->raiseError /var/www/html/ec/data/module/PEAR.php 557:DB_Error->DB_Error /var/www/html/ec/data/module/DB.php 893:PEAR_Error->PEAR_Error
原因はPostgreSQLの予約語
原因はSQLで使用しているテーブル名の別名「do」がPostgreSQLでは予約語であるため、SQLエラーが発生することです。
対処方法として、data/class/pages/LC_Page_Download.phpの83行目付近にある「do」の部分を他の文字列に書き換えてください。
以下の例では「do」→「dor」に書き換えています。
- 変更
-
$table = "dtb_order as dor,dtb_order_detail as dod";¬ $where = "dor.del_flg = 0 and dor.order_id = dod.order_id and dor.create_date > ? and dod.product_id = ?";
- source:
- エスキュービズム
- updated:
- 2010.07.25 07:07:52




