[PHP-users 11086] Re: postgresql 関数と DBSql クラスの違い

Osamu Shigematsu php-users@php.gr.jp
Fri, 25 Oct 2002 10:29:59 +0900


重松です。こんにちは。

> $sql = "SELECT EXTRACT(DOW FROM TIMESTAMP '$t_time')";
> $conn->query($sql);
> $conn->next_record(); 
> $iweek = $conn->f("EXTRACT");
>> $iweekにはなにも格納されず

db_pgsql.inc を読みましたか?

内部的には、単に pg_fetch_array() で引っ張ってきたのを
$this->Record に放り込んでるだけ。

  function next_record() {
    $this->Record = @pg_fetch_array($this->Query_ID, $this->Row++);
    
    $this->Error = pg_ErrorMessage($this->Link_ID);
    $this->Errno = ($this->Error == "")?0:1;

    $stat = is_array($this->Record);
    if (!$stat && $this->Auto_Free) {
      pg_freeresult($this->Query_ID);
      $this->Query_ID = 0;
    }
    return $stat;
  }

なので、連想配列のキーが 0 なら、0 何じゃないでしょうか。
# で、print_r() でキーを確認する必要があるわけです。

$sql = "SELECT EXTRACT(DOW FROM TIMESTAMP '$t_time')";
if($conn->query($sql) && $conn->next_record()){
	print_r($conn->Record);
}else{
	die("エラー処理");
}

というか、不精をせずに、

$sql = "SELECT EXTRACT(DOW FROM TIMESTAMP '$t_time') AS DAYOFWEEK";

とでもすれば、$conn->f('DAYOFWEEK') で引っ張れると思います。

-- 
Osamu Shigematsu <m5issige@mr.hitachi-medical.co.jp>