以下のコードは正常にデータベースを更新します。ただし、投稿が完了した後、ページのデータは古いです。つまり、SELECTクエリによって駆動されても$reader_busy[0]
は更新されません。POST後もPHPの古いデータが表示される
ユーザー画面で$reader_busy[0]
を正しく更新するには、更新が必要です。これは、ポストの後にページがリロードされ、次に更新されることを意味します。
ページを2回読み込まなくても、mysqlから正しいデータを表示するにはどうすればよいですか?私のPHPコードの
簡易版:私はあなたが達成しようとしていると、それが何を見
<?php
$reader_key = 'jm2';
$reader_busy_query = "SELECT `BusyWithClient` " .
"FROM {$wpdb->prefix}assistant " .
"WHERE `Key`='" . $reader_key . "'";
$reader_busy = $wpdb->get_col($wpdb->prepare($reader_busy_query));
$busy_with_client = $reader_busy[0];
if(isset($_POST['toggle'])){
$result = $wpdb->update(
$wpdb->prefix . 'assistant',
array('BusyWithClient' => $busy_with_client),
array('Key' => $reader_key)
);
// I want to remove/replace this line, and still see updated data.
echo "<meta http-equiv='refresh' content='0; url=" . curPageURL() . "#instructions" . "'>";
}
?>
<h1>
<?php print_r('busy: ' . $reader_busy[0]); ?>
<h1>
<form method="post" action="<?php echo curPageURL() . '#instructions'; ?>">
<input type="submit" name="toggle" value="toggle" >
</form>
サイドノート:準備されたステートメントを適切に使用していません。 [例](https://developer.wordpress.org/reference/classes/wpdb/prepare/#description)に従い、プレースホルダを使用します。 – Mikey
これで、Selectの後に$ read_keyを設定しました。また、Mikeyは正しいです、準備されたSQL文を使用してください。 – Kainax