PHPからMySQLとPostgreSQLを使うときの違いについて、注意する点はありますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント15pt

MySQL と、

http://www.php.net/manual/ja/ref.pgsql.php

PHP: PostgreSQL 関数 - Manual

PostgreSQL とで、PHP のインタフェースは似たり寄ったりですので、

「PHP から」ということでの特別な違いは無いでしょう。それよりも、

そもそも「MySQL」と「PostgreSQL」で概念が違うところや、

SQL の方言の部分など、PHP とは無関係に違う点の方が大きい

でしょう。

http://www.dokokano.com/php/php_pear_db.html

PHP4 Pear DBクラスの使い方

さらに PEAR に含まれる DB クラスを使えば、PHP のインタフェース

はの違いはなくなります。

先述のとおり、PHP 自体がもたらす違いは少ないと思います。

強いて言うと、MySQL のインタフェースは最初から使えて、

PostgreSQL のインタフェースは、追加しないと(もしくは、

コンパイルしなおさないと)使えない、というケースがよくある

ので、事前に phpinfo() でチェックしておくぐらいです。

id:katase_n

上記のfetch_row()などでも引数が違うのが不思議なんですよね。

メモリの扱い方などが違うんでしょうか。

2004/11/05 20:40:14
id:ssig33 No.2

回答回数217ベストアンサー獲得回数1

ポイント15pt

傾向としては、PostgreSQLは高機能だけれども、多少動作が重い。MySQLは機能がPostgreSQLよりも多少劣るが動作が高速という特徴があります。ですが、現在では両者の差はよほど大規模完璧に近いシステムが求められるような状況でなければでほとんど無いといっていいと思います。またMySQLのほうが世界的にユーザ数が多いので、多くのWebアプリケーションが対応しています。またPHPを利用するWebアプリケーションは世界的にはMySQLに対応していても、PostgreSQLには対応していないというものが多く、国産の特に商用のものについては、逆の傾向があります。ドキュメントについても同様で、PostgreSQLは日本語のドキュメントがそろっており、MySQLは世界的に見れば、PostgreSQLよりも多くのドキュメントがあります。

id:katase_n

MySQLは数年前に少し触っただけなんですけど今だと全然多機能ですよね〜。

2004/11/05 20:42:24
id:esseesse No.3

回答回数192ベストアンサー獲得回数0

ポイント15pt

http://www.hatena.ne.jp/1099646624#

人力検索はてな - PHPからMySQLとPostgreSQLを使うときの違いについて、注意する点はありますか?

URLはダミーです。

PHPに限らない話で、MySQLとPostgreSQLの違いについての注意点ですが、

それぞれのDBMSに依存する部分(関数とか。)に関しては当然注意は必要なのですが、

MySQL(4.0系)にはサブクエリやView、外部キーがありません。(4.1系、5.0系、InnoDB等では対応しているものもあり)

# その分処理が早いわけですが。

ですので、それらが必要な場合はPostgreSQLにするかstableでない(4.1系とか5.0系とか)MySQLを使う必要があります。

このへんはライブラリを使っても吸収できないところなのでご注意ください。

id:katase_n

InnoDBっていうのがまだよく分かってないのですが、普通MySQLと言った場合には含まれないんでしょうか?

2004/11/05 21:17:50
id:esseesse No.4

回答回数192ベストアンサー獲得回数0

ポイント15pt

http://www.atmarkit.co.jp/flinux/special/mysql5/mysql5b.html

@IT:エンタープライズ市場に向かうMySQL 5.0[前編](2/3)

URLはMySQLのバージョンによる機能の違いがわかりやすい記事です。

>InnoDBっていうのがまだよく分かってないのですが、普通MySQLと言った場合には含まれないんでしょうか?

どうやってMySQLをインストールするかにもよりますが、ソースからコンパイルする場合はconfigureのときに--with-innodbとしてやらないとInnoDBのテーブルは作れません。

バイナリからインストールする場合だと4.0以降はInnoDB対応で配布されているようですので、特に何もする必要はありません。

なお、MySQLをInnoDBに対応させても何も設定せずに普通にテーブルを作っただけではMyISAMになってしまいます。

1点、かなり大きなことを忘れてましたが、InnoDBじゃないとトランザクション処理ができなかったはずなのでご注意ください。

id:katase_n

MySQLは手軽ってイメージがあったのですが使える機能を考慮してたら複雑ですね・・。

2004/11/06 11:33:36
id:kekekun No.5

回答回数13ベストアンサー獲得回数0

ポイント15pt

普通にデータベースを作ったり、テーブルを作ったりはfetch_rowで行指定があるかないかぐらいでほとんど変わらないと思います。

DBの情報を得る時のやり方はゼンゼン違うので要注意かと

例:データベース一覧、テーブルの一覧、フィールドデータなど

InnoDBなどのテーブルの型についてはMYSQLのマニュアルの上記のページに詳しく書かれています。

id:katase_n

行指定が出来ないっていうことは一度読み出したらメモリから解放されるんですかね〜。

上のサイトはよく見てますが考えないといけないこと多いですね。

PHPのマニュアルを見る限りではエラーの取得の仕方も違うようですが・・・。

2004/11/06 11:40:46
id:yohgaki No.6

回答回数2ベストアンサー獲得回数0

ポイント15pt

http://www.php.net/

PHP: Hypertext Preprocessor

> 行指定が出来ないっていうことは一度読み出したらメモリから解放されるんですかね〜。

PHPでPostgreSQL, MySQLのどちらでもfetch_row()はほとんど使わないはずです。行を連想配列で取り扱った方が便利なので普通はfetch_assoc()を使います。

どちらもクエリ結果は全てメモリに格納されます。# DBのAPIレベルで。PHP変数としてはfetchした時点でコピーが作成されます。

# ただしMySQLのunbuffered queryは別です。マニュアルを見て下さい。

id:katase_n

あぁ、そうなんですか。

ありがとうございます。

2004/11/11 16:56:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません