-3
$query="SELECT MINUTE (ETA - STA) 
FROM `FlightSchedule` WHERE `flightNum_arr`='".$flightNum_arr."';";

$delay=ejecutar_query($query);

$query = "UPDATE `FlightSchedule` 
SET `delay`='".$delay."' 
WHERE `flightNum_arr`='".$flightNum_arr."';";

$result=ejecutar_query($query);

分の値を保存する代わりに、Resource id#を保存します。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

コードで$delayは、行内のデータではなく、結果を表すオブジェクト全体です。

ただし、次のような 1 つのステートメントで実行することもできます。

update `FlightSchedule` set delay=(SELECT MINUTE (ETA - STA) 
FROM `FlightSchedule` WHERE `flightNum_arr`='".$flightNum_arr."');";

編集:

代わりにこれを試して、MySQL が行うばかげたロックを回避してください:)

update `FlightSchedule` set delay=(select * from (SELECT MINUTE (ETA - STA) 
FROM `FlightSchedule` WHERE `flightNum_arr`='".$flightNum_arr."'));";

編集2:(別名、頭のてっぺんから走り書きするだけでなく、クエリをテストする必要があります...)

mysql> select * from updatetest;
+------+------+
| var1 | var2 |
+------+------+
|  450 |    1 |
|  100 |    5 |
+------+------+
2 rows in set (0.00 sec)

mysql> update
    updatetest set var2=
        (select * from
            (select var2 from updatetest where var1=100)
        updater);
Query OK, 1 row affected (0.00 sec)
Rows matched: 2  Changed: 1  Warnings: 0

mysql> select * from updatetest;
+------+------+
| var1 | var2 |
+------+------+
|  450 |    5 |
|  100 |    5 |
+------+------+
2 rows in set (0.00 sec)
于 2013-08-26T11:49:17.270 に答える