MySQLiを使用して行の1つをPHPで更新しようとしていますが、更新後1秒以内にPHPMyAdminを更新すると成功しますが、更新後2秒以上データを確認しただけでは更新されません。
例えば:
'UPDATE orders SET MachineID = '.$id.' WHERE OrderID = '.$OrderID.
'AND ProductID = '.$ProductID
さっとリフレッシュしないと動作しませんが...
'UPDATE orders SET MachineID = 2 WHERE OrderID = 4 AND ProductID = 12'
リフレッシュしてからどれだけ長くても動作します。(これらは、私が通常テストに使用するデータです。)
だから私はそれが私の変数になるだろうが、他のクエリでコードのこの部分の前にそれらをほぼ10回使用していて、それは完全に機能します。
- 変数をtrim()しようとしましたが、役に立ちませんでした。
- また、mysqli_real_escape_string()を使用しようとしましたが、成功しませんでした。
- mysqli_error()は私に何も与えていません。
- mysqli_affected_rows()は私に「1」を与えています。これはそれが想定されているものです。
- そして奇妙な部分は、「SELECT MachineID FROMorders WHERE OrderID = 4 AND ProductID = 12」を実行すると、phpMyAdminがデータを更新しなくても、更新された回答が得られることです。
この後、他のコードはないので、更新を「元に戻す」ことができるものは何もありません。
通常の「テスト」出力は次のようになります。
編集:これはブラウザが出力するものです。
ID: "2" //$id
OrderID: "4" //$OrderID
ProductID: "12" //$ProductID
UPDATE orders SET MachineID = 2 WHERE OrderID = 4 AND ProductID = 12 //Query
boolean true //Result var_dump
1 //Number of rows affected
2 //Machine ID
注:引用符は変数の一部ではありません。
編集:これはPHPコードです
$query = 'UPDATE orders SET MachineID = '.$id.' WHERE OrderID = '.$OrderID.' AND ProductID = '.$ProductID;
echo 'ID: "'.$id.'"<br/>
OrderID: "'.$OrderID.'"<br/>
ProductID: "'.$ProductID.'"<br/>'.$query.'<br/>';
$res = $db->query($query);
var_dump($res);
echo mysqli_affected_rows ($db).'<br/>';
$result = $db->query('SELECT MachineID FROM orders WHERE OrderID = 4 AND ProductID = 12');
$result = $result->fetch_array();
echo $result[0];
なぜそれがファイル内で機能し、クイックリフレッシュ後に機能するのかは本当にわかりませんが、データの取得に時間がかかる場合はわかりません。フェッチしないと一定時間後にリセットされるようなものです。
私はこれにほぼ2日間取り組んできましたが、なぜ機能しないのかわかりません。これは非常に単純なSQLクエリです。
編集: MySQLバイナリログを調べましたが、毎回1に更新しているようです。これが発生する可能性がある唯一の方法は、ファイルが2回実行される場合ですが、2回実行される場合、出力が1回だけ存在するのはなぜですか?
編集:わかりました。問題はGoogleChromeにあるようです。IEでテストしましたが、動作します。何らかの理由で、Chromeはファイルを2回実行します。