Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php datetime变量上的Mysql错误_Php_Sql_Mysqli - Fatal编程技术网

Php datetime变量上的Mysql错误

Php datetime变量上的Mysql错误,php,sql,mysqli,Php,Sql,Mysqli,我不是一个天生的程序员,我通常可以摸索通过使用这个网站,但这个查询错误让我难住了。查询的形式是将数据导出到CSV文件。“fromdate”和“todate”是从datepicker jquery widgit中提取的,修改为dateFormat:yy-mm-dd++00:00:00和dateFormat:yy-mm-dd++23:59:59 我将1个派生表与2个其他表连接起来。当我用变量替换值时,查询在mysql中运行得很好,但似乎在抱怨datetime,我尝试了多种格式化方法,但都没有用。我尝

我不是一个天生的程序员,我通常可以摸索通过使用这个网站,但这个查询错误让我难住了。查询的形式是将数据导出到CSV文件。“fromdate”和“todate”是从datepicker jquery widgit中提取的,修改为dateFormat:yy-mm-dd++00:00:00和dateFormat:yy-mm-dd++23:59:59

我将1个派生表与2个其他表连接起来。当我用变量替换值时,查询在mysql中运行得很好,但似乎在抱怨datetime,我尝试了多种格式化方法,但都没有用。我尝试了使用strotime和不使用strotime的查询

检查与您的MariaDB服务器版本对应的手册,以了解在'00:00:00附近使用的正确语法,并尝试使用calldate

 $sql1 = "select t1.npanxx, t1.state, t2.bnumber, t2.asr, t2.total, t2.carid, t2.carjur, t2.date, t3.vendorid FROM sncodes as t1 INNER JOIN (select bnumber, (select sum(carduration>0) / sum(carduration)*100) as ASR, (select count(carduration)) as total, carid, carjur, date FROM svcdrs group by bnumber,carid,carjur) as t2 on t1.npanxx = t2.bnumber AND calldate >=STR_TO_DATE('$fromdate','%Y-%m-%d %H:%i:%s') AND calldate <= STR_TO_DATE('$todate','%Y-%m-%d %H:%i:%s') INNER JOIN (select vendorid from svvendors) as t3 ON t2.carid = t3.vendorid AND vendorid=('$ids') order by npanxx";  


在MariaDB中,“日期”字段格式没有hh:mm:ss部分。所以Date只是一个日期“yyyy-mm-dd”。“calldate”很可能属于这种类型。因此,在比较中,您可能不使用“hh:mm:ss”,您应该撤消小部件修改以“yyyy-mm-dd”格式返回日期,然后重写代码,使sql日期范围比较看起来像calldate>='$fromdate'和calldate<date\u添加'$todate',间隔1天。下一个非常重要的注意事项-在sql查询中,如果没有转义或准备好的语句,就不要使用表单值。否则,您的代码容易受到SQL注入的攻击,理论上有人可以通过';删除数据库客户;-'在$fromdate字段date中,然后所有数据都消失。

尝试$sql1='选择t1.npanxx、t1.state、t2.bnum。和calldate>=STR_TO_DATE'.$fromdate'.…calldate尝试删除括号并添加引号,如。。。calldate>=“.$fromdate.”……这些是日期列还是日期时间列?如果它们是日期列,这将不起作用,因为不支持时间部分。当我删除strotime行并直接从$\u POST调用变量时,STR_TO_DATE起作用。否则默认为1970-01-01。谢谢
 $sql1 = "select t1.npanxx, t1.state, t2.bnumber, t2.asr, t2.total, t2.carid, t2.carjur, t2.date, t3.vendorid FROM sncodes as t1 INNER JOIN (select bnumber, (select sum(carduration>0) / sum(carduration)*100) as ASR, (select count(carduration)) as total, carid, carjur, date FROM svcdrs group by bnumber,carid,carjur) as t2 on t1.npanxx = t2.bnumber AND calldate >=STR_TO_DATE('$fromdate','%Y-%m-%d %H:%i:%s') AND calldate <= STR_TO_DATE('$todate','%Y-%m-%d %H:%i:%s') INNER JOIN (select vendorid from svvendors) as t3 ON t2.carid = t3.vendorid AND vendorid=('$ids') order by npanxx";  
 $sql1 = "select t1.npanxx, t1.state, t2.bnumber, t2.asr, t2.total, t2.carid, t2.carjur, t2.date, t3.vendorid FROM sncodes as t1 INNER JOIN (select bnumber, (select sum(carduration>0) / sum(carduration)*100) as ASR, (select count(carduration)) as total, carid, carjur, date FROM svcdrs group by bnumber,carid,carjur) as t2 on t1.npanxx = t2.bnumber AND calldate >='$fromdate' AND calldate <= '$todate' INNER JOIN (select vendorid from svvendors) as t3 ON t2.carid = t3.vendorid AND vendorid=('$ids') order by npanxx";