質問: 長さ1の空文字列? タイトルの通り、長さ1の空文字列で困っています。 現在、linux、apache、mysql、phpを使って3階層アプリケーションを作っています。 予めmysqlでテーブルの形を決めておいて、csvからデータを読み込ませておき、 phpでsql文を実行してレコードを取得することで、それらをユーザに表示という感じです。 複数あるカラムのうち、空文字列(csv上でブランクだったもの)は表示させたくないので、 phpで「 if(カラム=="")~ 」のように比較することで、空文字列だけ避けるつもりでした。 しかし上手くいかなかったので、strlen()で調べて見たところ、返り値が1でした。 本来は空文字列に対してstrlen()は0或いはfalseの返り値を返しますよね。 is_empty()でも空データ扱いにならず、当然nullの扱いでもありません。 そのため、実データとの区別が出来ずに困っています。 何故、空文字列のカラムを除外したいかというと、 db上のユニークなレコードを検索したいからです。 select * from where カラム='データ' and カラム='データ'... という風に。 「カラム=''」としてしまうと検索に引っかからなくなってしまいます。 どうすればよいでしょうか。 以下はそれぞれのバージョンです。 mysql:5.0.95 php:5.1.6 linux:rhel5 apache:2.2.3
回答: 改行文字が入ってませんか? trim()を使って不要なスペースや改行文字を消してみてください。