php pdo语句失败

jbose2ul  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(396)

我正在尝试用pdo运行sql查询
这很管用

$result = $dbo->query("SELECT sum(c) as scfus 
    FROM tbl 
    WHERE 
        YEAR(ondate)=YEAR('".$_POST['startdate']."') 
        AND MONTH(ondate)=MONTH('".$_POST['startdate']."') 
        AND DAY(ondate)=$i");

但事实并非如此

$result = $dbo->query("SELECT a,b,sum(c) as scfus 
    FROM tbl 
    WHERE 
        YEAR(ondate)=YEAR('".$_POST['startdate']."')
        AND MONTH(ondate)=MONTH('".$_POST['startdate']."') 
        AND DAY(ondate)=$i");

唯一的区别是在查询中添加了a、b列名。
我可以将这个查询(两者)直接运行到mysql中,并像预期的那样返回一条记录,但是pdo似乎不喜欢同一个查询中的列名和sum?
我看不出原因或解决办法。pdo的新成员,所以以前对我来说从来都不是问题。
谢谢。
update-ok,我仍然认为这应该可以正常工作,但是作为一种变通方法,我运行了两个几乎完全相同的sql语句。一个带有select sum(x),一个带有select a,b,但没有sum。工作很好,但我真的应该能够做到这一点在一个声明,除非我进入一些pdo的限制,我还没有意识到。

q8l4jmvw

q8l4jmvw1#

将工作从id=some的表中选择a,b,(从表中选择sum(id)*30)(从用户需要的表中选择id);

plupiseo

plupiseo2#

你可能需要 GROUP BY c (或您可能希望将域聚合函数分组的任何列) SUM() 通过)以获得所需的结果集。。。或许可以考虑一下上面的建议。

t5fffqht

t5fffqht3#

试着用这种方式来回答你的问题,为我实现你的目标:
$result=$dbo->query(“选择a,b,(选择sum(c)作为whateverfrom tbl),作为来自tbl的scfus,其中year(ondate)=year('”..$\u post['startdate']。“')和month(ondate)=month('”..$\u post['startdate']。“')和day(ondate)=$i“);
sum只返回一行,因此您永远不会得到所有结果,也不会只得到第一个匹配where条件的结果(它注册找到的第一条记录,然后只计算所需的内容)。
会有用的
哦,顺便说一句,做一个日期的时间戳,用datesql格式做一个日期post字符串,然后检查

WHERE date = $_POST['date']

相关问题