【问题标题】:PHP ("SELECT * FROM Table WHERE ... AND ...") [closed]PHP(“SELECT * FROM Table WHERE ... AND ...”)[关闭]
【发布时间】:2016-01-31 21:43:56
【问题描述】:

是否可以两次查询表/过滤表两次?

例如,我想过滤结果,以便我留下的结果显示表中的所有内容,其中一列等于“MAN”,另一列大于“12:00:00” '。我一直在这样做,但它不起作用,如下:

if($result = $db->query("SELECT * FROM TBLFlight WHERE IATADep = 'MAN' AND SchDep > '12:00:00';")){
    if($result->num_rows){
        while($row = $result->fetch_object()){
            echo $row->FlightID, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', $row->FlightNum, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', $row->IATADep , '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', $row->IARAArr , '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', $row->SchDep , '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', $row->SchArr , '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', $row->Comments ,'<br />';
        }
        $result->free();
    }
}

【问题讨论】:

  • 如何这不起作用?白屏?错误信息?返回了错误的数据?没有返回数据?如果您只尝试其中一种过滤器会怎样?这样能得到正确的数据吗?
  • 您在'12:00:00'; 中看到分号
  • 感谢您的快速响应 - 我没有收到任何错误,它只是空格
  • @Fred-ii- 除非问题已被编辑,否则我没有看到问题。它在 SQL 命令字符串的末尾。
  • @Fred-ii- 你没明白

标签: php mysql sql select phpmyadmin


【解决方案1】:

您 [大概] 将时间列 (SchDep) 与字符串文字 ('12:00:00') 进行比较。 MySQL 通过将时间转换为字符串,然后比较&lt; 运算符按字典顺序 的两侧来处理这个问题。相反,您可以显式提取小时并正确比较值:

SELECT * 
FROM   TBLFlight 
WHERE  IATADep = 'MAN' AND HOUR(SchDep) > 12

【讨论】:

  • '12:00:00';")if 语句中的分号;那也应该失败并杀死其余的过程。无论如何,它肯定会杀死while 中的进程。即:while($row = $result-&gt;fetch_object());{ 是有效的语法。
  • 分号是查询字符串的一部分。
猜你喜欢
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
  • 2011-04-06
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多