我正在尝试循环访问数据以建立聊天系统。 我做了一个php函数:
function getLatestMessageTime() {
$handler = new PDO('mysql:host=localhost;dbname=*****', '******', '*******');
// Set the query \\
$query = $handler->query('SELECT `time` FROM `messages`');
// Loop through the data \\
$latestTime = 0;
while ($row = $query->fetch()) {
if ($row['time'] > $latestTime) {
$latestTime = $row['time'];
};
};
// Return the latest message time \\
Return $latestTime;
}
我设置循环jQuery代码:
var latestTime = <?php echo getLatestMessageTime(); ?>;
latestTimeLoop();
function latestTimeLoop() {
if (latestTime < <?php echo getLatestMessageTime(); ?>) {
$("#container").load('ajaxLoad.php?time='+latestTime);
};
document.log(latestTime + " - " + <?php echo getLatestMessageTime(); ?>);
setTimeout(latestTimeLoop, 200);
}
但是当我将phpMyAdmin中的时间更改为远远高于其余数据时,它在我的console.logs中不会更新。看起来我的查询在我的函数中没有多次出现,它只抓取一次数据而不是每次我的javascript代码循环时都请求它。
每次循环时都有重置查询的方法吗?
答案 0 :(得分:1)
在查询中使用ORDER BY,并将查询限制为一个。
$query = $handler->query('SELECT `time` FROM `messages` ORDER BY `time` DESC LIMIT 1');
只需要最后的记录详细信息即可获得最新的消息时间。这就是为什么我说使用限制并根据它修改PHP代码。