[PHP-users 20386]pg_insert の実用例

kenbooit @ excite.co.jp kenbooit @ excite.co.jp
2004年 2月 16日 (月) 23:10:27 JST


こんばんは。島田と申します。

以前から pg_insert を使って楽をできたらなどと考えていて、
ちょっと時間があったので、クラスなり関数なりにまとめてしまおうと
思っているのですが、どうもうまくいきません。

これまでは以下のような感じで書いていました。

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

### 1番 #####################
// この辺の関数の内容はシカトしてください。
// あえてしょぼいものに変えてしまいました。
function convert($str) {
  $str = strip_tags($str);
  $str = trim($str);
  $str = stripslashes($str);
  return $str;
}
$name = variable($name);
$address = variable($address);

function length_check ($str, $str2, $max) {
  if($str != "") {
    $length = mb_strlen($str, EUC);
    if ($length > $max) {
      exit("{$str2}は{$max}文字以内で");
    }
  }
}
length_check ($name, "名前", 9);
length_check ($address, "住所", 32);

$sql = " insert into test (name, address) valus
('$name', '$address');
### 2番 ######################
$sql = ereg_replace("''","NULL",$sql);
$rs = pg_query($db_con,$sql) or die ("error");

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

現状、

$rs = pg_insert($conn, 'client', $insert);

if ($rs) {
  print("登録しました。\n");
} else {
  trigger_error ("失敗しました。", 256);
}

として、列数がどんなに多くても長いSQLを書かなくてよくなったわけですが、
この後がどうもうまくいきません。
上の例でいうところの2番、まずNULLへの変換で躓いています。

検索して、pg_convert に辿り着いたのですが、
これって、SQL文書くときに''がなくてシンプルですね、みたいな説明でしたので、

$str = pg_convert ($con, 'test', $str
,PGSQL_CONV_FORCE_NULL);

なんてすると、

・前
Array ( [name] => あああ [address] => ) 
・後
Array ( [name] => 'あああ' [address] => 'NULL') 

となるわけで。。。
pg_convertでもっといいオプションがあるのでしょうか。
シングルクォートはしない、みたいな。
マニュアルにはないような・・・。

上の例でいうところの2番で躓いているのですが、
既に使いこなしている方で、1番の部分でもうまいやり方があったら、
教えて頂ければと図々しいですが、思っております。


PHP-users メーリングリストの案内