Mysql

我想根據 DATETIME 計算今天/昨天日期的所有行 - mysql+php

  • December 26, 2011

我有數據庫“db2”和表“menjava”

在表 menjava 中有“id”、“author”和“date_submitted”欄位

  • id - auto_increment
  • 作者 - int(11)
  • date_submitted - 日期時間

我想根據名為“date_submitted”的 DATETIME 欄位計算今天日期的所有行和昨天日期的所有行(因此將有兩個帶有條件的程式碼),該欄位包含每條記錄的創建日期和時間。

在文件 result.php 中,顯示了這個計數,但它不起作用。在同一個文件(result.php)中,我有一些其他程式碼來顯示來自不同數據庫的數據,所以我認為 povezava.php 工作正常。

我的程式碼:

<?
   require "povezava.php";
   $q=mysql_query(" SELECT COUNT(*) AS total_number FROM menjava 
WHERE date_submitted >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)",$link2);
// now you can 
if ( $nt = mysql_fetch_array($q)){
echo $nt["total_number"];
$q=mysql_query($nt) or die(mysql_error());
}

   ?>

我的文件 povezava.php 看起來像這樣:

<?
$servername='localhost';

$dbusername='user';
$dbpassword='pass';

$dbname1='db1';
$dbname2='db2';

$link1 = connecttodb($servername,$dbname1,$dbusername,$dbpassword);
$link2 = connecttodb($servername,$dbname2,$dbusername,$dbpassword);

function connecttodb($servername,$dbname,$dbusername,$dbpassword)
{
   $link=mysql_connect ("$servername","$dbusername","$dbpassword",TRUE);
   if(!$link){die("Could not connect to MySQL");}
   mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
   return $link;
}
   ?>

我得到的錯誤:

A PHP Error was encountered

Severity: NoticeMessage: Array to string conversionFilename: templates/master.phpLine Number: 231 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Array' at line 1

固定的:

<?
   require "povezava.php";
   $q=mysql_query("SELECT COUNT(*) AS total_number FROM menjava WHERE date_submitted >= DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY)",$link2);
// working 
if ( $nt = mysql_fetch_array($q)){
echo $nt["total_number"];
}

   ?>

謝謝!

您需要按索引訪問列:

if ( $nt = mysql_fetch_array($q)){
echo $nt[0];
}

(注意if而不是while- 這不是必需的,但您的查詢最多返回 1 行,因此不需要while)。

如果要按名稱訪問列,請將查詢更改為使用別名:

$q=mysql_query(" SELECT COUNT(*) AS total_number FROM menjava 
WHERE date_submitted >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)",$link2);
// now you can 
if ( $nt = mysql_fetch_array($q)){
echo $nt["total_number"];
}

此外,在調試時輸出錯誤(如果有)是有意義的:

$q=mysql_query(....) or die(mysql_error());

引用自:https://dba.stackexchange.com/questions/9729