mysql:13857
From: UNO Shintaro <UNO Shintaro <uno@xxxxxxxxxx>>
Date: Fri, 06 Apr 2007 00:17:30 +0900
Subject: [mysql 13857] Re: 特定のクエリを、全部の行で個別に実行させる方法について。
> 「resttime」への登録を、全ての行で繰り返して個別に実行したいと思い 苦心なさっておいでのようですが、普通のupdate文で一発でできますよ。 resttimeへの登録と件数カウントはこんなかんじかな。↓ $sql = "update faq_table set resttime = datediff(kigen, kyou) where kigen <> 0"; if (!mysql_query($sql)) { echo "期限登録失敗"; } else if (mysql_affected_rows() == 0) { echo "該当レコード無し"; } else { echo "期限を登録"; } やまもとのぶゆき wrote: > はじめまして、山本と申します。 > > テーブル内に > 残り日数:「resttime」 > 有効期限:「kigen」 > 今日の日付:「kyou」 > というdate方で指定した3つのフィールドがあり、それぞれアップデートで特定 > の日にちを登録出来るようにクエリを作成しています。行いたい作業は、有効期 > 限から今日の日付を引き、残った日数を残り日数として「resttime」に登録した > いと思っています。 > > 「resttime」への登録を、全ての行で繰り返して個別に実行したいと思い > > > $kyou = date("y-m-d"); > $sql = "update testing set kyou = '$kyou'"; > mysql_query($sql); > echo "今日の日付を登録しました。"; > > > $test1 = "select * from faq_table where kigen != 0000-00-00"; > $result = mysql_query($test1); > $rows = mysql_num_rows($result); > $row = mysql_fetch_array($result); > > if(rows != 0){ > echo "取該当レコード無し"; > } > > else { > while ($row = mysql_fetch_array($result)) > { > $inday = date($row["kyou"]); > $outday = date($row["kigen"] ); > $date1=explode("-",$inday); > $date2=explode("-",$outday); > $from = mktime(0,0,0,$date1[1],$date1[2],$date1[0]); > $to = mktime(0,0,0,$date2[1],$date2[2],$date2[0]); > $remains=($to - $from) / 86400; > $sql = "update faq_table set resttime = $remains where kigen != > 0000-00-00"; > mysql_query($sql); > echo "期限を登録"; > } > } > > というクエリを書いてみたのですが、一つ目のフィールドの更新を、全ての行に > 適用してしまい、思ったような処理結果になりません。 > > > 有効期限から今日の日付を引いて、残り日数を登録する。 > > 「kigen」 - 「kyou」 =「resttime」 > > といったクエリを登録された全ての行で行うにはまったく別の処理を行わなけれ > ばならないのでしょうか? > > 教えていただければと思います。 > > 環境:windowsXP/apache2/PHP4.1/MYSQL4.12 > > > -- UNO Shintaro, 宇野 信太郎 ( mailto:uno@xxxxxxxxxx )
13856 2007-04-05 20:19 ["やまもとのぶゆき" <] 特定のクエリを、全部の行で個別に実行させる方法について。 -> 13857 2007-04-06 00:17 ┗[UNO Shintaro <uno@xx] 13858 2007-04-06 14:15 ┗["やまもとのぶゆき" <] Re: [解決]特定のクエリを、全部の行で個別に実行させる方法について。