132件中 111-115件目     [ ... 18 19 20 21 22 23 24 25 26 27 ]

MySQLでは以下のようなクエリーでカラムを追加することができる。

ALTER TABLE <テーブル名> ADD <カラム名> <型情報>;
ALTER TABLE test ADD name varchar(255);
ALTER TABLE test ADD num int unsigned;
ALTER TABLE sample ADD address varchar(1023) NOT NULL;

また、以下のようにカラムを追加する位置を指定することもできる。

ALTER TABLE <テーブル名> ADD <カラム名> <型情報> AFTER <カラム名>;
ALTER TABLE <テーブル名> ADD <カラム名> <型情報> FIRST;
ALTER TABLE test ADD comment text AFTER name;
ALTER TABLE test ADD flag boolean FIRST;

さらに、複数カラムを追加することもできる。 ただし、PostgreSQLと書き方が異なることに注意。

ALTER TABLE <テーブル名> ADD (<カラム名> <型情報>, <カラム名> <型情報>, ....);
ALTER TABLE sample ADD (status_id tinyint, flag char(1), regist_time datetime);
ALTER TABLE sample ADD (percent float, num bigint);

PostgreSQLでバージョンを調べる方法はいくつかあり、psqlを使う方法やversion関数を使う方法などがある。


MySQLでバージョンを調べる方法はたくさんあり、mysqladminなどを使う方法やversion関数を使う方法などがある。


PHPでも当然、整数値(int型)の限界値(最大値)というものが存在する。 PHPの場合、定義済み定数にPHP_INT_MAXというものがあり、それで限界値を知ることができる。 int型のバイト数を知りたければPHP_INT_SIZEで知ることができる。

C言語などの多くの言語では、その値を超えるような計算をするとオーバーフローして値がおかしくなるが、PHPではint型最大値を超えると、データの型がfloat型になる。 例えば、32bit環境の場合「PHP_INT_MAX」はint(2147483647)だが、「PHP_INT_MAX + 1」はfloat(2147483648)となる。

ここで注意したいのは、一度float型になると値がint型の範囲になっても自動でint型に戻ることはないということだ。 つまり、「(PHP_INT_MAX + 1) - 1」はfloat(2147483647)となる。

これがどんなときに問題になるかというと、データの比較をするときに問題になることがある。 例えば、「(PHP_INT_MAX == (PHP_INT_MAX + 1) - 1)」という比較は値が同じなのでtrueであるが、「PHP_INT_MAX = = = (PHP_INT_MAX + 1) - 1」という比較は型がintとfloatなのでfalseである。
また、floatやdoubleのような浮動少数点のデータは誤差が発生することがあるために、「((PHP_INT_MAX * 11300002) / 11300002) = = PHP_INT_MAX」という比較の結果はfalseである。

$test = PHP_INT_MAX;           // int(2147483647)
$test = PHP_INT_MAX + 1;       // float(2147483648)
$test = (PHP_INT_MAX + 1) - 1; // (2147483647)
$test = (PHP_INT_MAX = = (PHP_INT_MAX + 1) - 1);    // bool(true)
$test = (PHP_INT_MAX = = = (PHP_INT_MAX + 1) - 1);  // bool(false)
$test = (((PHP_INT_MAX * 11300002) / 11300002) = = PHP_INT_MAX); //bool(false)

PHPではそんなにも大きな値を扱うことは滅多にないし、64bit環境になれば扱える値も大きくなるので、これでなんらかのバグにはまることはほぼないだろうが、一応頭には入れておきたい。


PHPでエラーが発生したとき、どのファイルの何行目でエラーが発生したかなどは表示されるためにすぐにわかることだが、そのエラーが自作関数の中で発生した場合、その関数がどこから呼ばれたのかを知りたいことは多い。 開発環境によっては、なんらかのソフトウェア(Zend Studioなど)の機能でそれを調べることができることもあるが、できないこともある。

実は、バックトレース(呼び出し履歴)はPHP標準の関数で表示させることができる。


132件中 111-115件目     [ ... 18 19 20 21 22 23 24 25 26 27 ]