[PHP-users 13755] Re: 関数の戻り値の使い方

tamura php-users@php.gr.jp
Wed, 05 Mar 2003 00:30:18 +0900


田村です。

草薙さん、ありがとうございます。
> 読み違えがありましたら失礼します。
 説明が悪くご容赦ください。目的は、SQL文の自動作成をしたいと、いうこと
です。SQL文を作成するとき、ミスばかり(私だけ)しています。

[PHP-users 13748]の問題

UPDATE m_category SET category_code='001', category_name='新薬',
category_explain='西洋医学に・・' WHERE category_id=1

を解決するべく、以下のようにしました。

function updatesql($svname, $dbname, $tbname, $usname, $psname, $id) {
  $cnt=0;
  $conn = mysql_connect($svname, $usname, $psname);
  $result=mysql_list_fields($dbname, $tbname, $conn);
  while ($cnt<mysql_num_fields($result)){
    $fdname[$cnt]=mysql_fieldname($result, $cnt);
    $cnt++;
  } 

  $sql = "SELECT * FROM $tbname WHERE ".$fdname[0]."=".$id;
  $result = mysql_query($sql, $conn);
  $myrow = mysql_fetch_row($result);

  $sql="UPDATE ".$tbname." SET ".$fdname[1]."='".$myrow[1]."'";
  for ($i=2; $i<=$cnt; $i++) {
    $sql.=", ".$fdname[$i]."='".$myrow[$i]."'";
  }
  $sql.=" WHERE ".$fdname[0]."=".$myrow[0];  //$fdname[0]は、int型
  return $sql;
}

 しかし、このSQL文は、UPDATE(修正)前のものです。
 ここで、また止まったままです。

> この記述では変数は展開されませんが、もしかして可変変数${$fdname[$i]}の値
> でUPDATEされようとしているのですか?
 勉強不足で、お返事ができません。


 また、[PHP-users 13750] の大場さんからもご指摘のように、動いたとしても
この方法は、冗長すぎます。なにか、別の考え方があれば、教えてください。