はじめに
あるフォームからMariaDBに書き込むアプリケーションに不具合が発生。
不具合の直前、CentOS7のPHPを7.2から7.4へアップデートした事、更にMariaDBも5系から10系にアップデートしていたので、どちらかのアップデートが原因。
とにかく原因をログから調査してみた。
不具合内容
このアプリは第三者が開発したPHPアプリ。
とりあえずログから確認すると、フォームからデータベースへのSQLのInsert処理でエラー。
SQLの実行部の変数を確認してみるとint型の項目へ空白が入っていた。
PHP7.2では発生せず、なぜ7.4のみ不具合が出ているのか・・・
原因はPOST取得か
更にアプリを分析すると、この項目(以降項目A)はフォームから直接【$_POST】で受け取ってからSQLを生成。
入力フォームの項目Aが未入力(空白)の場合、7.2ではnullとなるが7.4では空白をint型へ挿入する事でSQLエラーが発生する。
まとめ
今回は原因究明よりも対策を優先した為、調査はここまで。
7.2と7.4の仕様をもう少し調査したかったのですが、また時間のある時に行います。
エラー対策としては、未入力の場合はゼロ(NULLでもいいが)を挿入するようにプログラムを変更。
コメント