Anda kehilangan beberapa hal di sisi server untuk membuat ini berfungsi.
Pertama, seperti yang ditunjukkan @RiggsFilly, Anda perlu menggunakan klausa WHERE dalam pernyataan. Syaratnya harus cari transaksi yang baru dari yang terakhir dikirim.
Untuk itu, Anda perlu melacak stempel waktu dari pesan yang terakhir dikirim.
Server seharusnya hanya mengirim pesan jika kueri, sekarang dengan kondisi, mengembalikan hasil.
Terakhir, seluruh rutinitas untuk memeriksa transaksi baru dan mengirim pesan jika ditemukan harus disimpan dalam satu lingkaran.
<?php
include 'conn.php'; // database connection
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
$query = "SELECT TimeStamp, CardNo FROM transactions WHERE TimeStamp > ?";
$stmt = $conn->prepare($query);
$ts = time();
while(true)
{
if ($result = $stmt->execute([$ts])) {
$row = $result->fetch_assoc();
echo "data: " . $row['CardNo'] . "\n\n";
$ts = $row['TimeStamp'];
flush();
}
sleep(2);
}