Ihnen fehlen ein paar Dinge auf der Serverseite, damit dies funktioniert.
Zunächst müssen Sie, wie @RiggsFilly betonte, eine WHERE-Klausel in der Anweisung verwenden. Die Bedingung sollte sein, nach Transaktionen zu suchen, die neuer sind als die zuletzt gesendete.
Dazu müssen Sie sich den Zeitstempel der zuletzt gesendeten Nachricht merken.
Der Server soll nur dann eine Nachricht senden, wenn die Abfrage, jetzt mit der Bedingung, ein Ergebnis liefert.
Schließlich muss die gesamte Routine, nach neuen Transaktionen zu suchen und eine Nachricht zu senden, wenn sie gefunden wird, in einer Schleife gehalten werden.
<?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);
}