Я хочу посчитать все строки для текущей / вчерашней даты на основе DATETIME - mysql + php - PullRequest
0 голосов
/ 25 декабря 2011

У меня есть база данных "db2" с таблицей "menjava"

В таблице menjava есть поля "id", "author" и "date_submitted"

  • id - auto_increment
  • author - int (11)
  • date_submitted - datetime

Я хочу подсчитать все строки для текущей даты и все строки для вчерашней даты (так что будетдва кода с условиями), основанные на поле DATETIME с именем date_submitted, которое содержит дату и время создания каждой записи.

В файле 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"];
}

    ?>

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 декабря 2011

Попробуйте:

$q = 'SELECT COUNT(*) FROM menjava
          WHERE date_submitted >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)';
$result = mysql_query($q);
$total_rows = mysql_fetch_row($result);
print $total_rows[0] . ' authors have been submitted today and yesterday.'; 
0 голосов
/ 06 июля 2017

Пожалуйста, попробуйте следующие команды SQL:

$sqlToday = "Select COUNT(*) FROM menjava WHERE DATE(date_submitted) = CURRENT_DATE()";

$sqlYesterday = "Select COUNT(*) FROM menjava WHERE DATE(dc_created) = CURDATE() - INTERVAL 1 DAY";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...