• 締切済み

mysql_field_lenの返り値がvarcharで3倍になる

PHPの関数「mysql_field_len」で、わからない点がありました。 $id = mysql_list_fields ( 'DbName', 'TableName' ); $num = mysql_num_fields ( $id ); for ( $i=0; $i<$num; $i++ ) { print mysql_field_name ( $id, $i ) ."<BR>\n"; print mysql_field_len ( $id, $i ) ."<BR>\n"; print mysql_field_type ( $id, $i ) ."<BR>\n"; print mysql_field_flags ( $id, $i ) ."<BR><BR>\n"; } として、各フィールドの情報を表示させました。 すると、mysql_field_typeが「string」(実際にはvarchar)の時、 mysql_field_lenの返す値が3倍になって返ってきます。 例:varchar(8)→24 これは何の値を返しているのか、また設定の問題なのか、 ご存知の方はいらっしゃいますでしょうか。 よろしくお願いいたします。 環境: PHP4.3.10 MySQL4.1.10

みんなの回答

回答No.2

自分も同様の症状を経験しました。 原因ですが、 PHPはMySQLサーバーと、libmysqlclient.soを使って通信するようで。 もし、MySQLサーバーがloalhostではなく別のサーバーにある場合で、ローカルのlibmysqlclient.soを提供しいるMySQLのバージョンと、サーバー側のMySQLのバージョンが違う(自分の場合は、クライアント側が3系でサーバー側が4.1系でした)と、このような症状がおきました。 クライアント側のlibmysqlclient.soの方のバージョンをあげたら治りました。

回答No.1

mysql_field_lenはフィールドのデータ長ですから、varchar(8)であれば8と表示されるはずです。同じスクリプトをちゃちゃちゃっと動かしてみましたが、うちでは正しい値が表示されました。 こちらはMySQL4.0.21、php4.3.10、OSはturbo linux8です。

関連するQ&A