输入(datetime_local)字段中的MYSQL查询

时间:2016-04-23 21:04:07

标签: php mysql input

我遇到了mysql查询的问题:

$req=mysql_query("
  SELECT Device_Type, Device_Number, sum(Ok) as Ok, sum(Rejected) as Rejected, sum(QC_Rejected) as QC_Rejected
  FROM `Iteration_TotalStats`
  where Line_Id = $line and Device_Number IN ($dev) and time > '$datest' and time < '$daten'
");

变量&#34; for&#34;循环:

  • $ datest = $ _ POST [&#39; DATE_START&#39;];
  • $ daten = $ _ POST [&#39; date_end&#39;];

除了带变量($dates$datee)的时间参数外,一切正常。 输入在这里:

<input type="datetime-local" name="date_start" value="2016-04-19T09:00"></input>
<input type="datetime-local" name="date_end" value="2016-04-19T21:00"></input>

但是当我在mysql查询中直接输入这个日期和时间格式时,如下所示:

time > '2016-04-19T09:00' and time < '2016-04-19T21:00'

它工作正常。我不知道为什么它不适用于变量。请帮忙。

2 个答案:

答案 0 :(得分:0)

只是为了让你进入富有的轨道,并且为了表明PDO在你习惯之后并不那么难,我继续将你的代码转换为PDO:

$qry = $db->prepare(
    'SELECT '
        . 'Device_Type, '
        . 'Device_Number, '
        . 'sum(Ok) as Ok, '
        . 'sum(Rejected) as Rejected, '
        . 'sum(QC_Rejected) as QC_Rejected '
    . 'FROM `Iteration_TotalStats` '
    . 'WHERE Line_Id = :line '
        . 'AND Device_Number IN ($dev) '
        . 'AND time > :start '
        . 'AND time < :end'
);

$qry->bindParam(':line', $line);
$qry->bindParam(':start', $_POST['date_start']);
$qry->bindParam(':end', $_POST['date_end']);

$result = $qry->execute();

显然,你必须首先实例化$db变量,但这只是一个PDO实例,应该从手册中清楚说明:http://php.net/manual/en/pdo.construct.php

如果这可以解决您的问题,请告诉我。如果有什么不清楚的话,请随时询问。

答案 1 :(得分:0)

最后我发现了一个问题。 在mysql查询中,如果这样做:

  SELECT Device_Type, Device_Number, sum(Ok) as Ok, sum(Rejected) as Rejected, sum(QC_Rejected) as QC_Rejected, DATE_FORMAT(time, '%Y-%m-%dT%H:%i') 
FROM `Iteration_TotalStats` where Line_Id = $line and Device_Number IN ($dev) and time > '$ds' and time < '$de'

现在我使用mysqli withoun bind,它的工作正常。