(MYSQL)选择具有特定参数的最后一行

时间:2015-09-04 12:42:27

标签: php mysql row where

我遇到了PHP项目的麻烦。更具体地说,MYSQL数据库让我很烦恼。以下是整个事情的想法:

  • 我已经建立了一个包含3个表的数据库 - T1,T2,Log。 T1存储雇主的姓名和代码; T1存储工人的姓名和代码; 记录商店ID(自动递增),雇主姓名,工人姓名,开始日期和结束日期(工作)。

  • 我制作了一个包含两个字段的表单 - 雇主代码和工人代码。 我的PHP代码检查字段中输入的代码(检查它们是否为空,然后检查它们是否与T1和T2中的信息匹配)。然后使用“提交”按钮发送所有数据并将其存储到日志表中。 但是我必须在那里添加两个单选按钮:一个用于工作人员的开始时间,一个用于他的结束时间。当按下“开始”单选按钮时,sql请求执行以下操作 - 插入雇主姓名,工人姓名并开始开始日期。这部分在这里完美无瑕。 “我的结束日期”列设置为在更新时放置当前日期。

如果按下结束单选按钮,我希望发生以下情况:找到包含emp和worker的表单名称中所选的最后一行(它们输入的表单中的代码被检查,实际名称存储为变量)。所以有可能做出类似的事情:

SELECT ID FROM Log ORDER BY ID DESC LIMIT 1
WHERE Worker_Name='$nameW' and Employer_Name='$nameE'
  • $ nameW是工作人员的名称,$ nameE是雇主的名称。

我说的是类似的东西,因为它在整个WHERE部分给了我一个错误,并且不接受我的查询..

任何帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:1)

您的查询错误,请按以下方式使用:

 SELECT `ID` FROM `Log` 
 WHERE `Worker_Name`='{$nameW}' and `Employer_Name`='{$nameE}'
 ORDER BY `ID` DESC LIMIT 1

答案 1 :(得分:1)

您的查询不正确您必须将订单和限制部分放在最后(即在where条件之后)。对您的情况的正确查询将是:

v1 <- c('c54254_g4545_i5454', 'c434_g4_i455', 'c5454_g544_i3')