TOPページ > カテゴリ別表示 : SQL

本文開始▼

SQL アーカイブ

2007年01月04日

ロリポップサーバーのMYSQL

以前作成した、商品レビューページなんだけど動作重いなぁ。。。
MYSQL使ってデータをクエリしてるんだけど、長い時だと10秒くらい時間かかる。早ければ1秒程度なんだけど。アクセス数増えてきたら絶対無理くさいな。

やっぱXMLでデータ管理して上手い具合にやったほうが安定するのかなぁ。

2006年12月12日

PHP+MYSQLで商品レビューページを作成。

先日ブログで取り上げた、PHP+XMLで作った商品レビューページを改良して、ついに公開しました。
http://ks-product.com/items.php

PHP+XMLからPHP+MYSQLに変更したことで、データ数の上限が増加及び検索機能がプラスされました。MYSQLの扱い(インデックスとか)があんまり理解できてないので、DBの処理が遅いかも。

肝心のレビューがまだほとんどありませんが。。。ちょくちょく更新していくつもりでいるので宜しくです。ちなみに、レビューできるのは管理人だけという仕様になっています。(個人では管理しきれない。。。)

2006年12月07日

MYSQL:クエリする際のエスケープ2

PHPからMYSQLにクエリする際は、特殊文字をエスケープするわけだが、ではアンエスケープはいつするのか。

答えは、MYSQLにクエリした辞典で自動的にアンエスケープされる(っぽい)。

考えてみれば、クエリするときにだけインジェクション攻撃される可能性があるわけだから、データベース内ではエスケープしておく必要は無いわけだ。

2006年12月06日

MYSQL:クエリする際のエスケープ1

PHP等のスクリプトからMYSQLなどのデータベースに接続しクエリする場合、\n, \r, \, ', "などの文字列をエスケープする必要があります。上記文字列はSQLでは特別な意味を持つためです。(HTMLでいう < や > に相当。)

エスケープを行う為の関数がいくつか用意されているので、自力でエスケープする必要はありません。また、サーバー側で「magic_quotes_gpc」の設定がonになっている場合は自動でエスケープされます。

しかし、magic_quotes_gpcやエスケープ関数addslashesはインジェクション攻撃による脆弱性があるらしいので使わない方が無難らしい。(インジェクション攻撃とは、HTMLのフォームなどから不正なデータを送信し、不正アクセスなどをすること。)

エスケープするにはmysql_real_escape_string()関数を使用するのが無難っぽい。ただし、magic_quotes_gpcがonになっていると2重でエスケープ処理されてしまうので、.htaccessで設定を無効にするか、stripslashes()関数でエスケープ文字を取り除く。ただ、mysql_real_escape_string()関数を使っても万全ではないらしい。SHIFT-JISを使用するとヤバいらしい。

本文終了▲