2010年6月28日月曜日

left joinでもいっぺんにselect

select *,count(*) as count,hoge,fuga
 from a left join b on hoge.id=fuga.id;
といったように、二つのテーブルをleft joinするときも、
selectを書くのは一度でいいと分かった。
初めは、
select * from a select hoge,fuga from bのように
2回「select」を書いて,エラーに少し悩んだ。

ああ、初心者!

恥ずかしながら、メモです。

2010年6月27日日曜日

SQLite(PDO)でトランザクション、初成功

sqliteのPDOで、トランザクションを使わずに複数のSQL文を実行したら,やたら遅いので、トランザクションを勉強し、うまくいったのでメモです。

$stmt=$conn->beginTransaction();
for($i=0;$i<12;$i++){
$stmt=$conn->prepare("insert into tests (test,test_jp)
values(:test,:test_jp)");
$stmt->bindParam(":test",$tests[$i]);
$stmt->bindParam(":test_jp",$tests_jp[$i]);
$stmt->execute();
}
$stmt=$conn->commit();

bindとか、ちょっと面倒だし、
まだ使いこなせていません。。。

また、書き方が分からず、
$stmt=$conn->execute();としていたら、エラーだったので、
$stmt->execute(); というようにしたらOKに。

一方、SQL文を登録するにはprepare()内で書くと良い様子。
そっちは、
$stmt=$conn->prepare("insert into 。。。");みたいに$conn->が必要のようですね。

 まだよく分からない。。

が、とりあえず動いてくれて良かった!

■追記:西沢直木氏の「SQLite入門 第2版」「PHP辞典 第2版」の両方を見て、やっと少し分かってきました。PDOに関する記述は少なめで,まだよく分かりませんが、汎用性を獲得できそうなので、是非習得したいところです。

2010年6月14日月曜日

Postgreの文字コード変換のためのメモ。

PostgreSQLの文字コードを変換する必要があるので、参考になりそうなページをメモ。


http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230849/


http://neta.ywcafe.net/001031.html


nkfというコマンドが使えるんだな。。

2010年6月7日月曜日

Cannot send session cache limiter - headers already sentがでる場合メモ

「Cannot send session cache limiter - headers already sent」
という記述が出た場合は、
ブラウザに何か出力してからsession_start()している、ということの様子。

ブラウザに何かを出力する前に、session_start()する必要あり。

■追記:session_start()は、二度宣言しても問題ない様子。ある判別式の前と後の両方でsession_start()しても問題なかった。
一つ問題解決して、良かった。。

2010年6月6日日曜日

正規表現でアルファベットを抜いた時のメモ。

正規表現で、「<h2>長野NAGANO</h2>」といった文字列から、後ろのアルファベットを抜く際のメモです。

$match=preg_replace('/<h2>(.*[^\w])\w+<\/h2>/','$1',$str);

\wがアルファベットを示す。
()内の文字列をキャプチャーし、$1でアクセスできる。


■追記:$txt=preg_replace("/<h2>(.*?)([A-Z]+)<\/h2>/","<h2>$1</h2>",$str);
でもいけるっぽい。