Mysql查询结果没有给我正确的结果

时间:2015-06-29 10:32:56

标签: javascript php mysql database

我每5秒更新一次我的php页面

window.setInterval(function(){ 
    console.log(<?=mysql_num_rows(mysql_query("select * from records"))?>)
}, 5000);

如果我的表中有5条记录,则输出为5, 但是当我插入一条新记录时,输出仍为5,除非我刷新整个页面,然后它将是6 ..

怎么了?

4 个答案:

答案 0 :(得分:1)

您对PHP和Javascript的工作方式存在根本性的误解。别担心,这在第一次学习网页开发时很常见!

当您使用PHP在页面上打印内容时(例如{{1}}中的代码),代码在服务器上执行。尝试查看页面的来源,您会看到当浏览器收到页面时,PHP代码已被其结果替换。

这意味着当你的Javascript循环运行时,它只是重复写出相同的预先计算的值。

要完成您的目标,您需要接受每5秒刷新一次页面,或者阅读AJAX。 AJAX是如何在不重新加载页面的情况下从服务器(因此,来自数据库的任何内容)加载新内容的方式。这就是StackOverflow用来显示“这个问题的1个新答案”的例子。

答案 1 :(得分:0)

这是因为你正在将PHP与JS混合,PHP值是在页面加载时编写的,并且它始终保持在页面中。

您应该使用再次请求值的Ajax请求。

执行仅返回此值的PHP页面:

<?=mysql_num_rows(mysql_query("select * from records"))?>

然后用这样的东西扩展你的JS:

    setInterval($.ajax({
        url: 'your-url-with-php-result', 
        type: 'GET', 
        cache: false,
        success: function(result){                          
              console.log(result);
        }           
    }), 5000);

您还需要包含Jquery来执行此操作

答案 2 :(得分:0)

你不能在javascript代码中使用php

你在example.php中保存php并在javascript代码中调用example.php

您的 example.php 就像这样

<?php
    echo mysql_num_rows(mysql_query("select * from records"));
?>

现在您可以通过此代码大约5秒左右从示例中获取数据(加载是jquery函数

<html>
 <head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  <script>
    setTimeout(function(){
     $("#showRes").load("example.php"); 
    }, 5000);
  </script>
 </head>
 <body>
  <div id="showRes"></div>
 </body>
</html>

答案 3 :(得分:0)

你通常混合jaavscript和php的概念。你可以很容易地解决这个问题。通过将php值传递给ajax并且该值应该捕获javascript。尝试查看页面的来源,并且您将看到当浏览器收到页面时,PHP代码已经被其结果替换。

在php页面中编写php代码,如: -

    <?=mysql_num_rows(mysql_query("select * from records"))?>

并使用js作为不同的页面。称该值为您的要求。 如: -

     setInterval($.ajax({
     url: 'your-url-with-php-result', 
     type: 'GET', 
     cache: false,
     success: function(result){                          
          console.log(result);
     }           
     }), 5000)

如果你需要一些jquery,那么你也在你的代码中包含它。