簡體   English   中英

如果 MySQL 獲得新的最高 ID,如何觸發 PHP?

[英]How can I trigger PHP if a MySQL gets a new highest ID?

我試圖讓我的網頁在我的 SQL 表中的最高 ID (auto_increment) 增加的事件上執行操作(在這種情況下播放聲音),這在注冊新用戶時發生。 例如:3 個用戶注冊,最高 ID = 3。當新用戶注冊時,最高 ID = 4。如果發生這種情況,網頁會回聲/播放聲音。 Js和PHP分別是:

 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function() { setInterval(function () { $('#show').load('data.php') }, 3000); }); </script>
 <?php include ('../includes/dbh.inc.php'); if ($conn->connect_error) { die("Connection error: " . $conn->connect_error); } $result = $conn->query("SELECT * FROM signs WHERE id = (SELECT MAX(id) FROM signs)"); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo $row['firstName']; echo $row['lastName']; echo $row['inOrOut'] . '<br>'; $numId = $row['ID'] . '<br>'; echo $numId; } $value = 1; $value = $numId; if ($value < $numId) { //echo '<script type="text/javascript">play_sound();</script>'; echo "increased"; } else echo "nothing detected"; } } ?>

如您所知,我嘗試通過比較最后一個和最新的 ID 值來做一些事情,但失敗了。

我的嘗試是為 oldID 存儲一個初始值,然后在替換它之前將其與 newID 進行比較。

你不能只用 PHP 做到這一點。 但是你可以這樣做:如果你有一個網站,你在 php.ini 的輸出中設置當前的最高 ID。 您可以使用 javascript 每 5 分鍾(或您認為有意義的任何其他時間跨度)調用另一個 php 腳本,以返回當前的最高數字。 如果 php 腳本中的數字高於 javascript 中的數字,則可以讓 javascript 為您播放聲音。

假設您的 php 腳本返回這樣的 id:

{"id":4}

javascript調用的一個例子是:

<html>
<head></head>
<script>

let highestId = 2;

window.setInterval(async function(){
    const response = await fetch('http://localhost/jstest/index.php');
    const myJson = await response.json();
    console.log(console.log(myJson.id));
    if (highestId < myJson.id) {
        highestId = myJson.id
        // here you can play your sound
        $s = document.getElementById('myId');
        $s.innerHTML = highestId;
    }
}, 5000);

</script>
<body>
<span id="myId">0</span>
</body>
</html>

您可以使用 cookie 變量來執行此操作。 使用 php 設置 cookie 值並使用 php 文件調用發送 cookie 值。 通過這種方式,您可以識別新的最高 ID。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        setInterval(function () {
            var id = getCookie("highest_id");
            $('#show').load('data.php?id='+id)
        }, 3000);
    });
</script>

如果更改了值,請在代碼中添加 set cookie。

<?php
include ('../includes/dbh.inc.php');
if ($conn->connect_error) {
    die("Connection error: " . $conn->connect_error);
}
$result = $conn->query("SELECT * FROM signs WHERE id = (SELECT MAX(id) FROM signs)");
if ($result->num_rows > 0) {
    $numId = 0;
    if ($row = $result->fetch_assoc()) {
        $numId = $row['id'];
    }
    $value = $_GET['id'] ?? 0;
    if ($value < $numId) {
        //echo '<script type="text/javascript">play_sound();</script>';
        echo "increased";
        setcookie("highest_id", $numId, time() - 3600);
    } else {
        echo "nothing detected";
    }
}
?>

注意要點:

在 PHP 中: setcookie("highest_id", $numId, time() - 3600);

在腳本中: getCookie("highest_id");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM