[PHP-users 1257] Re: コードをコピーしたことによるエラー?

BosProject T.Takeuchi php-users@php.gr.jp
Sun, 19 Aug 2001 15:24:55 +0900


 他の方もおっしゃっておられましたが、エラーが出た際に
どのようなエラーメッセージが表示されたかが分からないと
的を射た回答ができないことがほとんどです。

 文面を読んだだけで想定できるのは次の2点でしょうか。

・エンコーディング設定
・検索結果が0である

 基本的にPHPはEUCで記述されていることが原則となりますが、
S-JISになっているということはないでしょうか。入力内容の
文字コード、内部処理用の文字コード、出力時の文字コードなど
つねに自分の環境に合わせて把握、設定しておくことは重要です。
php.iniの設定などもご自身の環境に合わせて適切にカスタマイズ
されてみてはいかがでしょうか。私の場合、php.iniで設定して
いますが、他社からの依頼で直接php.iniをカスタマイズできない
場合には、次のようなことをしています。

<?php
function my_echo($var){
    echo i18n_convert($var,"SJIS");
}

$html .= "   出力内容を全て$htmlに保存しておく  ";
my_echo($html);
?>

> $sel1 = "select name,area,tel from user where id = '$id1'";
> $execid = pg_exec ($dbcon, $sel1);

 次にこのようなselect文の場合には、pg_numrowsで検索結果数を
取得して得た数に応じて処理を展開しないとエラーが起きることが
あります。今回のケースではidが一意の値であろうと推測しますので、

if(pg_numrows($execid) != 1){  // エラー時のエラーナンバーを1とする
  echo "ERROR:1<br>\n";
  echo $sel1;
  exit;

  検索結果が1以外の場合は、検索数が0もしくは一意であるべき
  idをwhere句として使った結果が正しくない恐れがあるため
  エラー処理を行った方が良いでしょう。
}

 このような無駄と思えるようなコーディングが後々のデバッグ作業を
楽にすることがあります。また今回のケースのようなselect文の処理は
頻繁に利用することが多いと思いますので、再利用しやすいように
独自にクラスを作っておくと楽になると思います。

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
合資会社ボスプロジェクト
竹内 輝明 webmaster@bos-project.com
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*