データベースをセットアップしましたが、これはテーブルの 1 つです。
+-------------------------+------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+------------+------+-----+---------------------+-------+
| id | char(23) | NO | PRI | NULL | |
| claim_date | timestamp | NO | | CURRENT_TIMESTAMP | |
| banned | tinyint(1) | NO | | NULL | |
| available_downloads | tinyint(4) | NO | | 10 | |
| last_download_attempt | datetime | NO | | NULL | |
| last_activation_attempt | datetime | NO | | NULL | |
| download_exp_date | timestamp | NO | | 0000-00-00 00:00:00 | |
| available_activations | tinyint(4) | NO | | 5 | |
| os_version | tinyint(1) | NO | | NULL | |
+-------------------------+------------+------+-----+---------------------+-------+
問題は、mysqli_stmt と mysqli->query() の両方を使用して新しい値でレコードを更新しようとするたびに、datetime 以外のすべての値が変更されることです。私が使用しているクエリは
$stmt = $this->db->prepare('UPDATE licences SET available_activations=available_activations-1, last_activation_attempt=? WHERE id=?');
$stmt->bind_param("ss", date("Y-m-d H:i:s"), $licence_id);
$stmt->execute();
available_activations の値は減少しますが、last_activation_attempt は変化しません。時間の値を ("Ymd His" とタイムスタンプの両方の形式で) ハードコーディングしようとしましたが、データ型をタイムスタンプに変更しようとしましたが、まだ死んでいます。mysql コンソールに同じクエリを入力すると正常に動作しますが、php はそれを処理していないようです。この場合、どうすればよいですか?
更新 最も奇妙なことは何ですか-このコードは外部アプリケーションからクラスメソッドとして呼び出され、カスタムphpコードから(メソッド)を呼び出すと正常に動作します(available_activationsとlast_activation_attemptの両方の値が変更されます)が、使用するとこのアプリケーションでは、available_activation 値のみが変更されます。$_POST データを使用します。