gpt4 book ai didi

php - MySQL查询数据库考勤进出

转载 作者:行者123 更新时间:2023-11-29 11:49:25 25 4
gpt4 key购买 nike

我有数据库 Microsoft Access

表格CHECKTIME

USERID    CHEKTIME
1 2015-06-21 07:34:00
1 2015-06-21 07:50:00
1 2015-06-21 16:00:00
1 2015-06-21 16:48:00
2 2015-06-21 07:08:00
2 2015-06-21 13:48:00
2 2015-06-21 17:08:00
3 ....................

我想将数据传输到 MySQL 查询并显示结果:

userId    colDate         colIn          colOut
1 2015-06-21 07:34:00 16:48:00
2 2015-06-21 07:08:00 17:08:00
3 .......... ........ ........

请帮助我

这个查询让我陷入了最终测试

为什么PHPMyAdmin无法插入数据?或者 ms access 无法声明 MIN 和 MAX 查询?这个函数和查询怎么样:

public function getPresensi(){


$dbName = $_SERVER['DOCUMENT_ROOT']."/presensi-app/assets/database/upj.mdb";
$user = "";
$password = "";


$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", $user, $password);

$qry = "SELECT USERID as id, CHECKTIME as check, min(CHECKTIME) as masuk, max(CHECKTIME) as keluar FROM CHECKINOUT group by USERID,date(CHECKTIME)";

$result = odbc_exec($conn,$qry);

while ($data[] = odbc_fetch_array($result));

odbc_free_result($result);

odbc_close($conn);

$tbl = 'tb_kehadiran';
$db_mysql = $this->load->database('default',TRUE);
$db_mysql->trans_start();
$db_mysql->truncate($tbl);
foreach($data as $k => $v){

$data_mysql = array(

'colUserID' => $v['id'],
'colDate' => $v['check'],
'colJamMasuk' => $v['masuk'],
'colJamKeluar' => $v['keluar'],

);
if($data_mysql != null){
$db_mysql->insert($tbl, $data_mysql);
}

}

$db_mysql->trans_complete();
$db_mysql->close();


}

最佳答案

根据您的评论,尝试以下操作:

SELECT USERID as id, CHEKTIME as date, MIN(CHEKTIME) as colIn, MAX(CHEKTIME) as colOut FROM timetable group by userid,date(chektime)

使用 ma​​xmin 获取结果时,如果不使用分组依据选项,则只能得到一个结果。将分组依据添加到按用户和日期分组(这样您还将为每个用户获得多个日期)

你可以在这里查看at sqlfiddle

要更改日期格式,请使用:

date_format(CHEKTIME,'%y-%m-%d') as date

自从我开始以来,你的问题发生了很大变化这是迄今为止我在您的帖子/代码中看到的问题的总结。

  1. 你没有声明你是mysql连接
  2. 在对数据进行任何操作之前释放结果并关闭与 ms-access 的连接
  3. 您正在使用已弃用的 mysql 而不是 mysqli
  4. 您尚未测试是否查询返回结果(使用 MS-Access 作为引用或您的代码)

一步一步开始调试您拥有/没有的内容。

解决步骤:

  1. 在 MS-Access 中测试查询并查看是否有结果,如果没有结果则修复
  2. 更改代码以在执行其他操作之前将结果打印到屏幕
  3. 创建另一个到 mysql 的连接(不是 MS-Access)

要显示所有错误,请在打开 php 后立即添加以下内容

 ini_set('display_errors', 1); 
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);
$error='';

更新 2:ms-access 查询应该是:

SELECT Checktime.USERID, DateValue([CHEKTIME]) AS [Day], Min(TimeValue([CHEKTIME])) AS [In], Max(TimeValue([CHEKTIME])) AS Out FROM Checktime GROUP BY Checktime.USERID, DateValue([CHEKTIME]);

关于php - MySQL查询数据库考勤进出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com