Php 如何获取查询执行的次数

Php 如何获取查询执行的次数,php,mysql,Php,Mysql,在PHP中,是否有方法获取24小时内执行查询的总次数?在数据库中创建另一条记录,并从零开始其值,然后编写另一个简单函数let call updateCount(),执行查询时将调用updateCount()。updateCount()将有一个简单的sql查询,每次执行查询主查询时,该查询都会将记录增加1 我希望这能有所帮助。试着多安排一张桌子。使用以下列将其命名为executetb: exid(int,主增量和自动增量) executionnumber(int) datetimeexec列(应

在PHP中,是否有方法获取24小时内执行查询的总次数?

在数据库中创建另一条记录,并从零开始其值,然后编写另一个简单函数let call updateCount(),执行查询时将调用updateCount()。updateCount()将有一个简单的sql查询,每次执行查询主查询时,该查询都会将记录增加1


我希望这能有所帮助。

试着多安排一张桌子。使用以下列将其命名为executetb:

  • exid
    int
    ,主增量和自动增量)
  • executionnumber
    int
  • datetimeexec
    列(应具有
    datetime
    数据类型)
如果您的页面是access,您的系统应该运行一个查询,检查您的
executetb
中是否存在当前的数据。在运行主查询之前,先等待当前的执行次数:

$today = date("Y-m-d");

if($stmt = $connection->prepare("SELECT exid, executionnumber FROM executetb WHERE DATE(datetimeexec) = ? ")){
  $stmt->bind_param("s",$today);
  $stmt->execute();
  $stmt->store_result();
  $check = $stmt->num_rows;

    if($check == 0){ /* IF NO EXISTING DATA FOR TODAY */
      $exact = date("Y-m-d H:i:s"); /* GET CURRENT DATE AND TIME */
      $executionnumber = 0; /* START WITH 0 */
      if($stmt2 = $connection->prepare("INSERT INTO executetb (executionnumber, datetimeexec) VALUES (?)")){
        $stmt2->bind_param("is",$executionnumber,$exact);
        $stmt2->execute();
        $exid = $stmt2->insert_id; /* GET THE INSERTED ID */
        $stmt2->close();
      } /* END OF CREATING A DATA FOR TODAY */
    } /* END OF IF NO EXISTING DATE FOR TODAY */

    else { /* ELSE, IF THERE IS ALREADY A DATA FOR TODAY */
      $stmt->bind_result($exid,$executionnumber); /* GET THE CURRENT EXECUTION NUMBER FOR TODAY */
      $stmt->fetch();
    }

  $stmt->close();
} /* END OF PREPARED STATEMENT */
并在执行查询时使用
if()
语句:

if($stmt = $connection->prepare("SELECT column FROM table")){ /* WHEN THE STATEMENT IS TRUE */
  $stmt->execute();
  $executionnumber = $executionnumber + 1; /* INCREMENT THE CURRENT NUMBER OF EXECUTION */
  mysqli_query($connection,"UPDATE executetb SET executionnumber = $executionnumber WHERE exid = '$exid'"); /* THEN UPDATE THE EXECUTION TABLE */
  $stmt->close();
}
功能: 要将其放入函数中,只需创建一个函数:

function execute($today){
  /* PUT HERE THE FIRST CODE I'VE PROVIDED EXCEPT FOR THE DATE TODAY */

  return $executionnumber;
}
if(/* YOUR MAIN STATEMENT QUERY HERE */){

  $today = date("Y-m-d");
  $numberofexec = execute($today);
  $numberofexec = $numberofexec + 1;

  mysqli_query($con,"UPDATE executetb SET executionnumber = '$numberofexec' WHERE DATE(datetimeexec) = '$today'");

} /* END OF YOUR MAIN STATEMENT */
并调用您的函数:

function execute($today){
  /* PUT HERE THE FIRST CODE I'VE PROVIDED EXCEPT FOR THE DATE TODAY */

  return $executionnumber;
}
if(/* YOUR MAIN STATEMENT QUERY HERE */){

  $today = date("Y-m-d");
  $numberofexec = execute($today);
  $numberofexec = $numberofexec + 1;

  mysqli_query($con,"UPDATE executetb SET executionnumber = '$numberofexec' WHERE DATE(datetimeexec) = '$today'");

} /* END OF YOUR MAIN STATEMENT */

您可以通过从最后1天开始的常规日志中出现的查询的计数来获得它。例如— 首先启用常规日志并输出到表

SET global general_log = 1;
SET global log_output = 'table';
然后运行查询

select count(*) from mysql.general_log where timestampdiff(second,event_time,now()) <= 86400 and argument ='select * from test where id=4';
    +----------+
    | count(*) |
    +----------+
    |        3 |
    +----------+
    1 row in set (0.00 sec)

从mysql.general\u log中选择count(*),其中timestampdiff(第二个,event\u time,now())表示您尝试了什么??表现出一些努力…你说的24小时是什么意思???该查询是否在单个页面中运行?在一次运行中??或者页面被多次调用???如果是这样的话,您需要使用一个db表来跟踪它,我希望有一些php函数,如果有的话。但是,这也有帮助。谢谢:)@KumariManisha-如果你想在函数中更新我的答案,请更新它。@KumariManisha我已经更新了我的答案,你只需一次查询就可以得到它。