2011年1月11日火曜日

PHPの浮動小数点処理に無限ループのバグ

PHPの浮動小数点処理に無限ループのバグ
http://slashdot.jp/developers/11/01/08/0527259.shtml

PHP5.2および5.3。
文字列"2.2250738585072011e-308"(304桁の10進数表記でも同様)からdoubleへの変換を、
PHPの32ビットプロセス上で実行した場合に無限ループする。。。

パッチ

メモ:addとaddAND(addOr)の違い

Criteriaでadd指定で条件を指定した場合
同一カラムに指定されていた条件が上書きされる

$c = new Criteria();
$c->add(TablePeer::COLUMN_ALPHA, 'hoge');
$c->add(TablePeer::COLUMN_BETA, 'piyo');
$c->add(TablePeer::COLUMN_BETA, 'foo');

WHERE column_alpha = 'hoge'
AND column_beta = 'foo'

※「column_beta = 'piyo'」の条件が「column_beta = 'foo'」で上書きされる


-------------------------------------------
addAnd(addOr)を使用すると指定されていた条件に対して追加される

$c = new Criteria();
$c->add(TablePeer::COLUMN_ALPHA, 'hoge');
$c->add(TablePeer::COLUMN_BETA, 'piyo');
$c->addAnd(TablePeer::COLUMN_BETA, 'foo');

WHERE column_alpha = 'hoge'
AND column_beta = 'piyo'
AND column_beta = 'foo'

※「column_beta = 'piyo'」の条件に「column_beta = 'foo'」が追加される

2010年11月11日木曜日

PL/pgSQLのソースコード確認方法

PostgreSQLに登録したPL/pgSQLの内容を確認する方法

-----------------------------------------
SELECT routine_definition
FROM information_schema.routines
WHERE routine_name = '(関数名)';
-----------------------------------------

(例)
=#
CREATE OR REPLACE FUNCTION hogehoge(INTEGER) RETURNS VOID AS $$
DECLARE

BEGIN

END;
$$ LANGUAGE plpgsql;

=#
SELECT routine_definition
FROM information_schema.routines
WHERE routine_name = 'hogehoge'

-----------------------------------------

参考URL

2010年10月21日木曜日

propelでdoUpdate

Propelで複数行を条件指定でまとめて更新する場合

UPDATE (テーブル) SET カラム = 値 WHERE (条件)
をPropelで書くときのメモ

-------------------------------------------------

$update = new Criteria();
$where = new Criteria();

// 更新する内容を設定
$update->add(カラム名1, 値);
$update->add(カラム名2, 値);

// 更新対象を抽出するWhere句
$where->addAnd(カラム名3, 値);
$where->addAnd(カラム名4, 値);

// コネクションを取得
$con = Propel::getConnection(DB名);

// 更新処理
BasePeer::doUpdate($where, $update, $con);


-------------------------------------------------

Update テーブル
SET カラム名1 = 値, カラム名2 = 値
WHERE カラム名3 = 値
AND カラム名4 = 値

参考URL

2010年9月9日木曜日

Unable to get sequence id

symfony に Unable to get sequence id. と言われた、そんなとき
http://unicus.jp/wp/archives/43

symfony1.4 + Postgresqlで発生

lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php
getSequenceName が32のため発生している

2010年8月27日金曜日

symfony1.4でのプロジェクト作成コマンド

symfony1.4

Propelを利用する場合のプロジェクト生成
>symfony generate:project (プロジェクト名) --orm=propel


アプリケーション生成
>symfony generate:app (アプリケーション名)


モジュール生成
>symfony generate:module (アプリケーション名) (モジュール名)

2010年8月10日火曜日

csvが文字化け

SJIS-winで出力しているCSVがUTF-8として認識される現象が発生

http://www.okushin.co.jp/kodanuki_note/2009/09/csv.html

require,includeで読み込んでいるPHPファイルの中にBOM付UTF-8が混入していた為