2013-06-15 1 views
1
<?php 
while($row=mysql_fetch_array($res)) 
{ 
    //Result; 
    //select the sum in here; 
    $sumQry = "SELECT SUM(amount) FROM login WHERE tdate = '<?php echo date("F d, Y" ,time()); ?>" />' "; 
} 
?> 

ОШИБКИ Анализировать ошибку: синтаксическая ошибка, неожиданный T_STRING в ... на линии 4Вычислить SUM в MySQL для ошибки сегодняшней даты #Parse

я хочу, чтобы вычислить сумму чисел (я имею в виду, как 10 + 50 + 85 + 90) на сегодняшний день и diplsay сумма в конце фонтана. поэтому использовал вышеуказанный код. но я думаю, что некоторые вещи не так с <?php echo date("F d, Y" ,time()); ?>


UPDATE Ok. Спасибо, парни! Оставьте о дате. но я также не могу отобразить сумму для общего.

Предупреждение: mysql_fetch_array(): поставляется аргумент не является допустимым MySQL результаты ресурс в ** в строке 3

<?php 
include "db.php"; 
while($row=mysql_fetch_array($res)) 
{ 
    //Result; 
    //select the sum in here; 
    $sumQry = "SELECT SUM(amount) FROM login"; 
} 
?> 
+0

Просто FYI, используя PHP тегов в строке запроса не будет делать вам никакой пользы, , Вы уже строите строку запроса в PHP, поэтому используйте конкатенацию с '.', чтобы добавить вывод функции, такой как' date() ', в строку, как вы видите в ответе @ pvnarula. – kuujo

+0

Проверьте сейчас. Обратите внимание, что цикл не нужен, потому что из-за группы будет возвращен один результат. – transilvlad

+0

Также я использовал mysqli вместо mysql, поскольку mysql устарел. См. Http://www.php.net/manual/en/class.mysqli.php – transilvlad

ответ

0

Предлагаю вам изменить таблицу MySQL и использовать либо DATE, DATETIME, либо TIMESTAMP.

Как вы это делаете, ваше поле CHAR или VARCHAR, это означает, что индексирование, даже если присутствует, будет работать неправильно.

Если у вас есть поле в качестве одного из вышеуказанных, они могут быть проиндексированы, а производительность вашего запроса будет оптимальной даже при большом количестве записей.

Вещь DATE, DATETIME и TIMESTAMP хранятся численно с помощью MySQL. Также вы сможете сортировать по этому полю, если вам когда-либо понадобится показать больше, чем запись, и хотите заказать это поле.

$sumQry = "SELECT SUM(`amount`) FROM `login` WHERE `tdate` = ". date("Y-m-d" ,time()); 
$sumQry = "SELECT SUM(`amount`) FROM `login` WHERE `tdate` = ". date("Y-m-d H:i:s" ,time()); 
$sumQry = "SELECT SUM(`amount`) FROM `login` WHERE `tdate` = ". time(); 

Я также добавил поля MySQL процитировать, потому что даже если это не обязательно большую часть времени, это хорошая вещь, чтобы использовать. Если у вас большой запрос JOINed, он будет работать с ними на 5% лучше. Они также хороши, если вы случайно используете зарезервированные слова в качестве имен полей.

Ваш код должен выглядеть следующим образом:

include "db.php"; 
$res = mysqli_query($con, "SELECT SUM(`amount`) FROM `login` WHERE `tdate` = '". date("Y-m-d" ,time() . "' GROUP BY `ammount`;"); 
$row = mysqli_fetch_array($res); 
echo $row[1]; 

В db.php вы должны иметь что-то вроде:

$con = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db'); 
+0

@tinu спасибо :) Я обновил свой вопрос, пожалуйста, проверьте его сейчас – user2457175

0

Если TDate не является типом данных INT в БД необходимо инкапсулировать значение в кавычки :

$sumQry = 'SELECT SUM(amount) 
      FROM login 
      WHERE tdate = "'.date("F d, Y" ,time()).'"'; 
+0

@ilwrence cherone спасибо :) Я обновил свой вопрос, пожалуйста, проверьте его сейчас – user2457175

+0

@ user2457175 вам нужно сначала запросить запрос, освежить на некоторых php/sql tutorials –

Смежные вопросы