2012-01-30 11 views
0

SQL UPDATE内で3つのパラメータ(日、月、年)を取るカスタムPHP関数CalculateAgeを使用したいと思います。しかし、私は関数にSQL変数を渡す必要があり、私はそれを行う方法を知らない。ここでは、それがどのように見えるかを示します(bday、bmonth、byearは "users"テーブルの列です)。構文:SQL UPDATEクエリ内のPHP関数の使用

mysql_query("UPDATE users SET age=".CalculateAge(bday,bmonth,byear).""); 
+0

あなたはできません。 PHPはリクエストをMySQLサーバに文字列として送ります。この文字列はPHPの関数については何も知りません。それは、あなたが入れるテキストだけで構成されています。その機能が何をしているのかを教えてください.SQLリクエストで同じことをすることは可能かもしれません。 – Cheery

+0

別の方法 - データベース内にストアド・ファンクションを実装する。 [ストアドルーチン](http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html)をご覧ください。 – dmitry

答えて

1

mysqlの値をそのような関数に渡すことはできません。値を取得するには、SELECTを実行し、行をフェッチして関数に渡してから、その値にINSERTを渡す必要があります。

年齢を更新する代わりに、決して変更されないので、人の誕生日を保存することをお勧めします。年齢を表示したいときは、単に計算します。

+0

ありがとうございました。 –

1

PHP関数をクエリに組み込むことはできません。最初に各行のデータを照会する必要があります。各行の結果値を計算し、結果に基づいて各行を更新するためにクエリを実行します。

1

最初のデータベースからデータを取得:

$data = mysql_query("SELECT bday,bmonth,byear FROM users"); 
$info = mysql_fetch_array($data); 

は今... $age=CalculateAge($info['bday'],$info['bmonth'],$info['byear']);
PHPの関数を呼び出して、テーブルを更新します。

mysql_query("UPDATE users SET age=".$age."");