ここから本文です

【至急】DB処理でエラーが発生いたしました。どうかご教授ください。

wa_********さん

2018/6/1411:16:54

【至急】DB処理でエラーが発生いたしました。どうかご教授ください。

PHP Version 5.6.36
DB サーバー MySQL 5.5.38
WEB サーバー Apache/2.2.15 (CentOS)いつもお世話になっております。
昨日、PHPのバージョンを5.3 → 5.6 へアップし、
下記のエラーが発生していることが判明致しました。


PHP5.3の際は問題なかったのですので、
php.iniの設定の誤りでないかとは思いますが・・・。

時間がせまってきておりますため、
どうかよろしくお願い致します。


2018/06/14 10:54:19 [/admin/order/disp.php] Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [SELECT do.order_id, do.message, do.create_date, do.order_fax01, do.order_fax02, do.order_fax03, do.total, if(do.deliv_other_park = 1 ,concat('その他:',do.deliv_other_park_data),dp.name )as park_name, do.deliv_date, do.deliv_time, dp.area_name FROM dtb_order as do left join dtb_park as dp on( do.deliv_parkno = dp.park_id) WHERE order_id ='82047' ORDER BY do.deliv_other_park asc , dp.name asc, do.deliv_other_park_data asc, CAST(do.deliv_time as TIME) asc, do.order_id asc ]
MDB2 Error: syntax error
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_256cff6e1324e5d9431974c0b6a8044d855b38637d FROM 'SELECT do.order_id, do.message, do.create_date, do.order_fax01, do.order_fax02, do.order_fax03, do.total, if(do.deliv_other_park = 1 ,concat(\'その他?']
[Native code: 1064]
[Native message: 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 1]
on [/home/bbq/html/data/class/SC_Query.php(1064)] from 120.51.201.58
login_id = xxxxxxx(0)[ndqtbh7hscak4u58ujoprel3s6]
/home/bbq/html/admin/order/disp.php(34): LC_Page_Admin_Order_Disp_Ex->process
/home/bbq/html/data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Disp_Ex.php(56): LC_Page_Admin_Order_Disp->process
/home/bbq/html/data/class/pages/admin/order/LC_Page_Admin_Order_Disp.php(103): LC_Page_Admin_Order_Disp->action
/home/bbq/html/data/class/pages/admin/order/LC_Page_Admin_Order_Disp.php(156): SC_Query->select
/home/bbq/html/data/class/SC_Query.php(167): SC_Query->getAll
/home/bbq/html/data/class/SC_Query.php(279): SC_Query->prepare
/home/bbq/html/data/class/SC_Query.php(1005): SC_Query->error
/home/bbq/html/data/class/SC_Query.php(1064): trigger_error

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
65
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

リクエストマッチ

2018/6/1413:10:36

#このご時世にMDB2はあり得ないと思います・・・

PDOで書き直すことを推奨します。時間が迫っているとのことですが、いったんバージョンを戻してください(まさか「すでに戻せない状況」なんてオチはありませんよね)。

で、PDOに書き替えたスクリプトの検証を行ってから再度バージョンアップしてください。

http://made.livesense.co.jp/entry/2016/11/01/070000
https://www.websec-room.com/2015/03/26/2199

  • shi********さん

    2018/6/1413:50:09

    ちなみに・・・。当該行で引き渡しているSQL文はどのようなものでしょうか?

    SQL: [SELECT do.order_id, do.message, do.create_date, do.order_fax01, do.order_fax02, do.order_fax03, do.total, if(do.deliv_other_park = 1 ,concat('その他:',do.deliv_other_park_data),dp.name )as park_name, do.deliv_date, do.deliv_time, dp.area_name FROM dtb_order as do left join dtb_park as dp on( do.deliv_parkno = dp.park_id) WHERE order_id ='82047' ORDER BY do.deliv_other_park asc , dp.name asc, do.deliv_other_park_data asc, CAST(do.deliv_time as TIME) asc, do.order_id asc ]

    となっていますが、渡しているのはprepareですよね?'その他:'の最後の「:」が悪さしていたりはしませんかね(placeholderとして誤認識されている可能性)。マルチバイト(全角)で'その他:'としても変化ありませんか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/6/14 13:58:41

ご回答ありがとうございます。

確かにおっしゃる通りです。
ただ、「戻せない状況」ではないですが、
戻してしまったら、
決済関連が非稼働となってしまいます・・・。

また、「:」がやはりプレースホルダーとして認識されていることが
原因と判明し、大文字に変更したところ、
解決致しました。

この度は、非常に助かりました。
誠にありがとうございました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる