实时更新 MySQL 数据

Posted

技术标签:

【中文标题】实时更新 MySQL 数据【英文标题】:Live update MySQL Data 【发布时间】:2014-09-15 12:41:01 【问题描述】:

我有以下代码,它工作得很好,我只是想将它转换为实时,因此它每 10 秒左右更新一次而不刷新页面,我猜我需要使用 AJAX 或 Jquery,但我缺乏如何做到这一点的知识。

=====VIA <?php include("database.php"); ?>====
<?php
// Create connection
$con=mysqli_connect("ip/host","user","pass","db");
// Check connection
if (mysqli_connect_errno()) 
  echo "Failed to connect to MySQL: " . mysqli_connect_error();

?>

====ON THE PAGE====
<? php

$result = mysqli_query($con, "SELECT * FROM sql347511.1 ORDER BY ID DESC LIMIT 1;");

while ($row = mysqli_fetch_array($result)) 
    echo "<div class='infobox_data'>Temperature: ".$row['TEMP']."&deg;C</div>";
    echo "<div class='infobox_data'>Humidity: ".$row['HUMID']."%</div>";
    echo "<div class='infobox_time'>Captured: ".date("g:i:s a F j, Y ", strtotime($row["TIME"]))."</div>";


mysqli_close($con); ?>

【问题讨论】:

&lt;meta refresh :) 或 learn.jquery.com/ajax jQuery AJAX 是世界上最简单的事情 :) 检查一下。 api.jquery.com/jquery.ajax $.load(); 另外,仅供参考。可能升级为使用 PDO 进行连接。这是公认的做法。 @PatrickEaton 请问什么是PDO? 【参考方案1】:

搞定了,谢谢大家的帮助。

Javascript

$(document).ready(function()    
    loadstation();
);

function loadstation()
    $("#station_data").load("station.php");
    setTimeout(loadstation, 2000);

station.php

<?php
include ("database.php");

$result = mysqli_query($con, "SELECT * FROM sql347511.1 ORDER BY ID DESC LIMIT 1;");

while ($row = mysqli_fetch_array($result))
    
    echo "<div class='infobox_data' id='infobox_temp'>" . $row['TEMP'] . "&deg;C</div>";
    echo "<div class='infobox_data' id='infobox_humid'>" . $row['HUMID'] . "%</div>";
    echo "<div class='infobox_time'>At " . date("g:i:s a F j, Y ", strtotime($row["TIME"])) . "</div>";
    

mysqli_close($con);
?>

数据的存放位置

<div id="station_data"></div>

【讨论】:

这是一个可行的解决方案。您是否在大型模型上测试过它,您是否尝试在多台 PC 上运行。我通过 3000 个连接获得了 20PC,而我的服务器 CPU 正在 100% 工作【参考方案2】:

您可以通过双击从 div 进行输入,然后通过 jquery 获取此输入值:

$().val;

然后使用 ajax 将此值发送到 php:

$.ajax(
    url: 'url_to_php_which_update_mysql',
    data: 'data': 'value_from_input',
    cache: false,
    success: function(response)
        $(input).val(response);
    
);

在 php 文件中你需要在数据库中上传 $_GET['data']

【讨论】:

感谢 Masiama,您能否详细说明所需的代码? 如何更改或转换现有代码以使其与 AJAX 请求一起使用? @Sam 页面上有文本框吗? 不,目前我只是将结果回显到 中,我应该将其更改为输入并这样做吗? 你需要为每个 和你提供唯一的 ID $('this_id').val();获得价值,然后使用我的答案中的 ajax。

以上是关于实时更新 MySQL 数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql 查询出多条数据并更新其中一个字段值,不让更新怎么办

mysql 我如何查询一批数据后,并更新这批数据

mysql怎么自动更新表格里数据

mysql 如何只更新其中一条数据?

mysql 如何更新某一条数据内容

实时更新 MySQL 数据