[PHP] クエリ文字列の生成

2010
02.02
phpで「a=1&b=2」などのクエリ文字列の生成方法について調べてみました。

string http_build_query(array $formdata [, string $numeric_prefix  [, string $arg_separator  ]] );

formdata
プロパティを含む配列もしくはオブジェクト
配列の形式は、単純な一次元構造、 もしくは配列の配列 (言い換えると、他の配列を含む配列) となります。
numeric_prefix
もし数値インデックスが基底となる配列に使用されたり numeric_prefix が指定された場合、 基底となる配列の要素に対する数値インデックスの前にこれが追加されます。
これは、後で PHP や他の CGI アプリケーションによってデータがデコードされる際、 正当な変数名になるよう考慮したものです。
arg_separator
arg_separator.output が区分のためのセパレータとして使用されます。ただし、 このパラメータが指定されていた場合は それが使用されます。

<?php
$data = array(“test”=>”aaa”,”test2″=>”bbb”,”test3″=>”ccc”);
echo http_build_query($data).”\n”;
echo http_build_query($data, ”, ‘&amp;’).”\n”;
echo http_build_query($data, ‘var_’).”\n”;
?>

とすると結果は

test=aaa&test2=bbb&test3=ccc
test=aaa&amp;test2=bbb&amp;test3=ccc
test=var_aaa&test2=var_bbb&test3=var_ccc

という風な結果が返ってきます。
php5からの機能ですが非常に便利そうです。

[Windows] FATからNTFSの変換

2010
02.01
Windowsのファイルシステムである、FATをNTFSに変換する方法について調べてみました。
FAT32では1ファイル4Gまでですが、NTFSでは1ファイル2TBまで扱えます。
互換性などのぞいては、その他もろもろのメリットがあったります。

その変換方法ですが
コマンドプロンプト(ファイル名を指定して実行のcmdでもいけます)を使用します。

コマンドプロンプトでのコマンドですが
convert 変換したいドライブ /fs:ntfs

とコマンドを打つとデータは保持され変換されます。

ここで注意なのですが
FAT32からNTFSの変換は可能ですが NTFSからFAT32にへの変換はできなくなるので注意してください。

[PHP] file_get_contentsでのプロキシ経由方法

2010
01.31
file_get_contentsなどのファイル操作関数でプロキシを経由してデータを取得したい場合どうすればよいのか調べてみました。

file_get_contentsでは第3引数でstream_context_create関数で生成したコンテキストリソースが渡すことが可能との事です。

<?php

$proxy = array(
“http” => array(
“proxy” => “tcp://proxy.example.com:8080″,
),
);
$proxy_context = stream_context_create($proxy);

$test = file_get_contents(“http://example.com”,false,$proxy_context);

?>

とするとプロキシ経由でアクセスできることが可能のようです。

[PHP] 時間取得

2010
01.30

PHPで時間を扱うことが多い今日この頃
時間を取得する関数はどういうのがあるのだろうという事で調べました。

string date ( string $format [, int $timestamp ] )

第一引数でフォーマットを指定します。
第二引数でタイムスタンプを設定するのですが、デフォルトではtime()です。

date(“Y/m/d”,time());という記述で
2008/09/03
という風に整形することができます。

他にも
array getdate ([ int $timestamp ] )
という関数で現在の時間を連想配列として取得できます。
連想配列には下記のものが用意されています。

second —- 現在の秒を定義する
mimutes — 現在の分定義する
hours —– 現在の時定義する
mday —— 現在の月次の日付を定義する
wday —— 現在の曜日番号を定義する
mon ——- 現在の月を定義する
year —- 現在の年を定義する
yday —— その年の通算日を定義する
weekday — 現在の曜日の文字列を定義する
month ——- 現在の月の文字列を定義する

まだまだ色々と存在する時間関数、奥が深いです。

[MySQL] LEFT JOIN と INNER JOIN の違い

2010
01.29
システム開発でデータベースを使っている場合頻繁に使う結合文、
その結合文であるINNER JOIN や LEFT JOINの違いというのは何だろうということで調べてみました。

SELECT (省略) FROM TEBLE_A INNER JOIN TABLE_B ON TABLE_A.id = TABLE_B.id
INNER JOINは結合する両方のテーブルにデータがある場合にデータが取得できます。

SELECT (省略) FROM TABLE_A LEFT JOIN TABLE_B ON TABLE_A.id = TABLE_B.id
LEFT JOINは左側(TABLE_A)の全データを取得し、右側(TABLE_B)のテーブルからもデータがあれば取得するという違いです。

LEFT JOIN で右側のテーブルにデータが無い場合はNULLとして結合されます。
またLEFT JOINの反対でRIGHT JOINというのもあります。

結合するテーブルにデータが無い場合でも、結合してデータを取得したい場合に便利です。

[dotProject]チケットが文字化けする

2010
01.29

dotProjectの機能でチケットがあります。

チケットとはなんぞやと正直よくわかってなかったので、
調べてみると。

チケット管理とはいわゆるヘルプデスクのようなもので、
顧客からの質問管理(質問の受付、回答の蓄積、質問から解決までのフロートラッキングなど)
を行うためのモジュールです。

なるほど…。
バグ管理など、これでやると便利そう!
など安易な考えて導入。

チケットの登録をしようとすると、日本語が化ける

単純に文字コードの問題?だと思って修正。(MySQL前提で・・・)

■DB接続などしてるファイルパス
includes/db_connect.php

14行付近でdb_connectしてるので、
その辺で
mysql_query(‘SET NAMES utf8′);
セキュリティ上怪しいとよく言われてますが、
外部公開しない事を前提にしてるので使ってます。

ちなみに
mysql_queryより↓
$db->Execute(‘SET NAMES utf8′);
が妥当だと思うのですが、
チケットのSQL発行してる関数を覗くと、
mysql_query関数を直で使っていたのでmysql_query直で発行しております。

はじめました。

2010
01.28

こんばんは。

はじめまして、おっさんと申します。

ここでは技術的な何かを自分自身のメモ帳的な意味もこめて書いていきます。

ツッコミやら、補足やら歓迎です。