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()); ?>"  />' ";
}
?>

ERROR解析エラー: 構文エラー、予期しない T_STRING が ... 4 行目にあります

今日の日付の数値の合計 (つまり 10+50+85+90 のようなもの) を計算し、その合計を fount end に表示したいと考えています。上記のコードを使用しました。しかし、私は何かが間違っていると思います<?php echo date("F d, Y" ,time()); ?>


更新 OK。みんなありがとう!日付について残します。しかし、合計の合計も表示できません。

警告: mysql_fetch_array(): 3 行目の ** で指定された引数は有効な MySQL 結果リソースではありません

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

2 に答える 2

0

tdate が db の INT データ型でない場合は、値を引用符で囲む必要があります。

$sumQry = 'SELECT SUM(amount)
           FROM login 
           WHERE tdate = "'.date("F d, Y" ,time()).'"';
于 2013-06-15T09:09:08.097 に答える
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 フィールドの引用符も追加しました。これは、必ずしもほとんどの場合ではない場合でも、使用するのに適しているためです。大規模な JOIN クエリがある場合、パフォーマンスが最大 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');
于 2013-06-15T09:11:38.580 に答える