Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 切换mysql查询以比较结果_Php_Mysql - Fatal编程技术网

Php 切换mysql查询以比较结果

Php 切换mysql查询以比较结果,php,mysql,Php,Mysql,我有一个包含几列的表,其中一列是日期列(data1) 使用的mysql查询是 SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 1 WEEK) and now() 然后,我们从每一行获取数据,运行一些计算,并将其存储为单独的变量 现在,我想通过更改SELECT查询,将此数据与上周的数据(在同一个表中)进行比较 让我扩展一下 用于从表中获取本周数据的查询: $sqld = "SELECT * from leads WH

我有一个包含几列的表,其中一列是日期列(data1)

使用的mysql查询是

SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 1 WEEK) and now()
然后,我们从每一行获取数据,运行一些计算,并将其存储为单独的变量

现在,我想通过更改SELECT查询,将此数据与上周的数据(在同一个表中)进行比较

让我扩展一下

用于从表中获取本周数据的查询:

$sqld = "SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 1 WEEK) and now()";
现在我们运行提取数据的过程

$result = mysql_query($sqld) or die(mysql_error());

$num_rows = mysql_num_rows($result);

while($row = mysql_fetch_array($result))
{
      $referred = $referred + $row['referred'];
      $invalidated = $invalidated + $row['invalidated'];
      $tobequalified = $tobequalified + $row['tobequalified'];
}
(以上只是我们需要运行以演示的计算的一小部分)

现在,我们显示基于本周数据的结果

          <h4>Totals for this week</h4>

            <table class="table stat-table">
                <tbody>
                    <tr>
                        <td class="value"><? echo $num_rows; ?></td>
                        <td class="full">Total leads</td>
                    </tr>
                    <tr>
                        <td class="value"><? echo $referred; ?></td>
                        <td class="full">Referred</td>
                    </tr>
                    <tr>
                        <td class="value"><? echo $invalidated; ?></td>
                        <td class="full">Invalidated</td>
                    </tr>
                    <tr>
                        <td class="value"><? echo $tobequalified; ?></td>
                        <td class="full">To be qualified</td>
                    </tr>

                </tbody>
            </table>
本周总计
总线索
援引的
无效
合格
现在,我想更改上面的$sqld查询,以选择表中上周属于的行,运行上面相同的计算并在下面显示结果,以便我们可以比较两者

            <h4> Totals for last week</h4>


            <table class="table stat-table">
                <tbody>
                    <tr>
                        <td class="value"><? echo $num_rows; ?></td>
                        <td class="full">Total leads</td>
                    </tr>
                    <tr>
                        <td class="value"><? echo $referred; ?></td>
                        <td class="full">Referred</td>
                    </tr>
                    <tr>
                        <td class="value"><? echo $invalidated; ?></td>
                        <td class="full">Invalidated</td>
                    </tr>
                    <tr>
                        <td class="value"><? echo $tobequalified; ?></td>
                        <td class="full">To be qualified</td>
                    </tr>

                </tbody>
            </table>
上周总计
总线索
援引的
无效
合格
在不复制所有内容和更改$sqld查询的情况下,是否有任何方法可以实现这一点

$result1 = mysql_query("SELECT * FROM leads");
$result2 = mysql_query("SELECT * FROM other table");
$arr1 = new Array();
$arr2 = new Array();

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
  {
  $arr1['FirstName'] = $row['your column name'];
  }

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
  {
  $arr2['FirstName'] = $row['your column name'];
  }

现在您有了两个数组($arr1和$arr2),并根据需要进行比较…

我认为您可以创建一个用于重复数据的函数,并使用一些参数调用它来更改查询,如下所示

somefunction("Previous");
somefunction();

function somefunciton($query = "current") {
    if($query == "Current")
        $sqld = "SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 1 WEEK) and now()";
    else
        $sqld = "SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 2 WEEK) and (now(),INTERVAL 1 WEEK)";
    $result = mysql_query($sqld) or die(mysql_error());

    $num_rows = mysql_num_rows($result);

    while($row = mysql_fetch_array($result))
    {
          $referred = $referred + $row['referred'];
          $invalidated = $invalidated + $row['invalidated'];
          $tobequalified = $tobequalified + $row['tobequalified'];
    }
    <h4>Totals for this week</h4>

        <table class="table stat-table">
        <tbody>
            <tr>
            <td class="value"><? echo $num_rows; ?></td>
            <td class="full">Total leads</td>
            </tr>
            <tr>
            <td class="value"><? echo $referred; ?></td>
            <td class="full">Referred</td>
            </tr>
            <tr>
            <td class="value"><? echo $invalidated; ?></td>
            <td class="full">Invalidated</td>
            </tr>
            <tr>
            <td class="value"><? echo $tobequalified; ?></td>
            <td class="full">To be qualified</td>
            </tr>

        </tbody>
        </table>
}
somefunction(“先前”);
somefunction();
函数somefunction($query=“current”){
如果($query==“当前”)
$sqld=“从数据1介于日期(现在(),间隔1周)和现在()之间的Lead中选择*”;
其他的
$sqld=“从数据1介于日期(现在(),间隔2周)和(现在(),间隔1周)之间的Lead中选择*”;
$result=mysql\u query($sqld)或die(mysql\u error());
$num\u rows=mysql\u num\u rows($result);
while($row=mysql\u fetch\u数组($result))
{
$referenced=$referenced+$row['referenced'];
$invalidated=$invalidated+$row['invalidated'];
$tobequalified=$tobequalified+$row['tobequalified'];
}
本周总计
总线索
援引的
无效
合格
}

你能给出一个更具体的例子吗?你可以使用一周前的date_diff()值连接回同一个表(假设索引允许)。这取决于你的php查询和计算代码。分离代码,将查询中的数据提取到一个数组中,并将该数组传递给计算。谢谢-我稍微重新格式化了它,并使用函数实现了我想要的结果。