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