php - 如何使用 PHP 正确更新 SQL 表行

标签 php mysql sql mysqli

当前更新:我已经清理了代码,但仍然存在一些问题。 注意此代码每 3 秒运行一次。最外面的“else”语句似乎在运行,将数据库表中的时间设置为 0,但随后没有任何事件。 在初始运行时间之后,最外层的“else”语句永远不会运行,并且存储在用户别名下的时间值应该不断更新为最新的时间戳,但它只是位于“0”。

这是运行php文件的JS:

//CHECK FOR NEW CHAT MESSAGES
setInterval(function()
{
    $.post("chat_update.php",  function(data) { $("#rect_comments_text").append(data);}  );
}, 3000);

代码:

<?php
    session_start();
    $alias = $_SESSION['username'];

    $host = 'localhost';
    $user = '*';
    $pass = '*';
    $database = 'vethergen_db_accounts';
    $table = 'table_messages';
    $time_table = 'table_chat_sync';
    $connection = mysqli_connect($host, $user, $pass) or die ("Unable to connect!");
    mysqli_select_db($connection,$database) or die ("Unable to select database!");
    $timestamp =  time();

    $last_time_query = "SELECT alias FROM $time_table";
    $last_time_result = mysqli_query($connection,$last_time_query);
    $last_time_rows = mysqli_fetch_array($last_time_result);

    if ($last_time_rows['alias'] === $alias)
    {
        $last_time = $last_time_rows['time'];
        $query = "SELECT * FROM $table WHERE time > $last_time ORDER BY text_id ASC"; //SELECT NEW MESSAGES
        $result = mysqli_query($connection,$query);

        //APPEND NEW MESSAGES
        while($row = mysqli_fetch_array($result))
        {
            if ($row['alias'] === "Vether")
            {
                echo '<p id = "chat_text">'.'<b>'.$row['alias'].'</b>'.': '.$row['text']."</p>";
                echo '<p id = "time_stamp">'.$row['time'].'</p>';
                echo '<p id = "chat_number">'.$row['text_id'].'</p>';
            }
            else
            {
                echo '<p id = "chat_text">'.'<b class = "bold_green">'.$row['alias'].'</b>'.': '.$row['text']."</p>";
                echo '<p id = "time_stamp">'.$row['time'].'</p>';
                echo '<p id = "chat_number">'.$row['text_id'].'</p>';
            }
            echo '<hr class = "chat_line"></hr>';
        }

        //UPDATE LAST SYNC TIME
        $update_query = "UPDATE $time_table SET time = '$timestamp' WHERE alias = '$alias'";
        mysqli_query($connection,$update_query);
    }
    else
    {
        echo '<p> HERE </p>';
        $update_query = "INSERT INTO $time_table (alias, time) VALUES('$alias','0')";
        mysqli_query($connection,$update_query);
    }



?>

最佳答案

你试试这个

$sql_update = "UPDATE time_table SET time= '$timestamp' WHERE alias = '$alias'";
if ($con->query($sql_update ) === TRUE) {
}
else{
    echo "Error: " . $sql_update . "<br>" . $con->error;
}

关于php - 如何使用 PHP 正确更新 SQL 表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47492952/

相关文章:

php - 如何将来自不同网站的php页面包含到当前网站?

MySQL Group By 取决于其他列值

java-生成id(字符串和整数的组合)

sql - Go SQL查询不一致

php - 确定 MySQL 中单行的最大公共(public)值

php - 在登录表单中禁用自动完成输入文本

php - 上传的图片在数据库中存储了两次

mysql - 如何使用 Diesel 创建和解析原始 SQL 查询?

mysql - 使用 Ubuntu 使用 Apache2 mysql 在 VPS 上部署 Django

mysql - 如何在 'if not exists' 子句中使用准备好的语句的结果?