問題となりそうなSQL文はこれです。
INSERT INTO TEST(ID,TITLE,ARTIST) SELECT * FROM ( SELECT 'id001' AS ID, 'タイトル1' AS title, 'アーティスト1' AS ARTIST FROM Dummytbl UNION ALL
SELECT 'id002' AS ID, 'タイトル2' AS title, 'アーティスト2' AS ARTIST FROM Dummytbl UNION ALL
SELECT 'id003' AS ID, 'タイトル3' AS title, 'アーティスト3' AS ARTIST FROM Dummytbl UNION ALL
・・・(繰り返し)
FROM Dummytbl(ダミー用のテーブル) ) AS insertDummy
シングルクォーテーションで囲まれた部分はPHPでtrimを行っており、実際の表示をしてみても何もありません。
ですが、ACCESS(.mdb)にPHPから以上のSQL文を発行してデータの新規作成すると、
なぜか末尾に多くの空白が入ります。
PHPは"eucJP-win"を内部エンコードに指定してあるので、
SQL文を"SJIS-win"にエンコード変換(mb_convert_encoding)してから、発行します。
他PHPプログラムの場合このSQL文は変化もなく、空白が入ることもなく
とても良く動いています。
しかし、今回、問題になっているプログラム上だけデータがおかしくなってしまっています。
他プログラムと違う場所はテーブルTESTはPHPプログラム内部から、
SQL文によって作成されるということです。あとはほとんどコピペですので、
違いはないと思います。
CREATE TABLE TEST
(
ID CHAR(25) ,
title CHAR(50) ,
artist CHAR(50)
)
私に見落としがあることは確かなのですが、
見つけられません。
どなたか、原因になり得ることをご教示下さい。
お礼
ありがとう御座います。そのとおりでした。 今は.mdbに合わせtext型に変更しています。 char型だと桁数分必ず確保してしまう、 またそのような場合はvarchar型でも有効的な使用が出来るということで、 とても勉強になりました。 text型より一般的なようですのでvarchar型で試します。 また機会があればよろしくお願いします。