(MYSQL) 选择具有特定参数的最后一行
(MYSQL) Selecting last row with specific parameters
我在处理给定的 PHP 项目时遇到了问题。更具体地说,MYSQL 数据库让我很困扰。这是整个事情的想法:
我已经创建了一个包含 3 个表的数据库 - T1、T2、Log。
T1 存储雇主的名称和代码;
T1存储工人的姓名和代码;
日志存储 ID(自动递增)、雇主姓名、工人姓名、开始日期和结束日期(工作)。
我制作了一个包含两个字段的表单 - 雇主代码和工人代码。
我的 PHP 代码检查字段中输入的代码(检查它们是否为空,然后检查它们是否与 T1 和 T2 中的信息匹配)。然后使用提交按钮发送所有数据并存储到日志 Table。
但我必须在其中添加两个单选按钮:一个用于 Worker 开始时间,一个用于他的结束时间。当按下 Start 单选按钮时,sql 请求执行以下操作 - 插入雇主姓名、工人姓名和开始日期。这部分在这里工作完美。
我的结束日期列设置为更新时的当前日期。
如果按下“结束”单选按钮,我希望发生以下情况:找到最后一行,其中包含 emp 和 worker 的选定表单名称(他们在表单中输入的代码被检查并存储实际名称作为变量)。那么有没有可能做这样的事情:
SELECT ID FROM Log ORDER BY ID DESC LIMIT 1
WHERE Worker_Name='$nameW' and Employer_Name='$nameE'
- $nameW 是工人的名字,$nameE 是雇主的名字。
我说类似的话,因为它在整个 WHERE 部分给我一个错误并且不接受我的查询..
如有任何帮助,我们将不胜感激。提前致谢!
您的查询有误,请按以下方式使用:
SELECT `ID` FROM `Log`
WHERE `Worker_Name`='{$nameW}' and `Employer_Name`='{$nameE}'
ORDER BY `ID` DESC LIMIT 1
您的查询不正确,您必须将 order by 和 limit 部分放在末尾(即在 where 条件之后)。针对您的情况的正确查询将是:
SELECT ID FROM Log
WHERE Worker_Name='$nameW' and Employer_Name='$nameE' ORDER BY ID DESC LIMIT 1
我在处理给定的 PHP 项目时遇到了问题。更具体地说,MYSQL 数据库让我很困扰。这是整个事情的想法:
我已经创建了一个包含 3 个表的数据库 - T1、T2、Log。 T1 存储雇主的名称和代码; T1存储工人的姓名和代码; 日志存储 ID(自动递增)、雇主姓名、工人姓名、开始日期和结束日期(工作)。
我制作了一个包含两个字段的表单 - 雇主代码和工人代码。 我的 PHP 代码检查字段中输入的代码(检查它们是否为空,然后检查它们是否与 T1 和 T2 中的信息匹配)。然后使用提交按钮发送所有数据并存储到日志 Table。 但我必须在其中添加两个单选按钮:一个用于 Worker 开始时间,一个用于他的结束时间。当按下 Start 单选按钮时,sql 请求执行以下操作 - 插入雇主姓名、工人姓名和开始日期。这部分在这里工作完美。 我的结束日期列设置为更新时的当前日期。
如果按下“结束”单选按钮,我希望发生以下情况:找到最后一行,其中包含 emp 和 worker 的选定表单名称(他们在表单中输入的代码被检查并存储实际名称作为变量)。那么有没有可能做这样的事情:
SELECT ID FROM Log ORDER BY ID DESC LIMIT 1
WHERE Worker_Name='$nameW' and Employer_Name='$nameE'
- $nameW 是工人的名字,$nameE 是雇主的名字。
我说类似的话,因为它在整个 WHERE 部分给我一个错误并且不接受我的查询..
如有任何帮助,我们将不胜感激。提前致谢!
您的查询有误,请按以下方式使用:
SELECT `ID` FROM `Log`
WHERE `Worker_Name`='{$nameW}' and `Employer_Name`='{$nameE}'
ORDER BY `ID` DESC LIMIT 1
您的查询不正确,您必须将 order by 和 limit 部分放在末尾(即在 where 条件之后)。针对您的情况的正确查询将是:
SELECT ID FROM Log
WHERE Worker_Name='$nameW' and Employer_Name='$nameE' ORDER BY ID DESC LIMIT 1