【发布时间】:2016-01-20 19:17:59
【问题描述】:
我正在用 PHP 编写一个报告方法,它传递了两个参数 $location 和 $weekYear。 $weekYear 是一个格式为2015-W34 的字符串,即 2015 年的第 34 周。我尝试运行的 sql 代码如下所示:
$sql = "SELECT
CONCAT(tutor.first_name, ' ', tutor.last_name) AS Student,
CONCAT(tutor.first_name, ' ', tutor.last_name) AS Tutor,
hours as HoursWorked,
DATE_FORMAT(work_date, '%a - %b %d') AS Day,
DATE_FORMAT(start_time, '%H') AS Hour,
DATE_FORMAT(start_time, '%i') AS Minute
FROM timesheet_entry
LEFT
JOIN user
AS student
ON student.id = timesheet_entry.student_id
LEFT
JOIN user
AS tutor
ON tutor.id = timesheet_entry.tutor_id
WHERE DATE_FORMAT(work_date,'%x-W%v') = '".$weekYear."'
AND tutoring_location = '".$location."'
AND work_type = 'instruction'
AND (instruction_type = '1-on-1' OR instruction_type = 'group')";
$query = $this->db->query($sql);
当我在 php 中运行代码时,我没有返回任何结果 但是当我回显 $sql 然后将其粘贴到 PhpMyAdmin 时,我得到了我期望的结果。
此外,如果我删除部分
DATE_FORMAT(work_date,'%x-W%v') = '".$weekYear."'
该方法运行,并返回比我想要的更多的记录,但它仍然运行。
我的DATE_FORMAT() 导致此查询出现故障怎么办?
非常感谢任何帮助、建议和建议!
【问题讨论】:
-
您使用
DATE_FORMAT()而不是WEEKYEAR()的任何原因? -
在您的 php 代码运行第一个查询时,您是否检查了 mysql 错误?
-
看不出明显的原因。通常这样的事情是由于你没有注意到的额外字符,比如空格。
-
我尝试添加和 if else,else 运行 die(mysql_error() ) 但它通过了,一般没有 sql 错误。至于 WEEKYEAR(),是否仍然可以添加破折号和 W 作为格式选项?
-
看起来它现在可以工作了,我删除了所有不必要的空格和线条,很奇怪......但谢谢大家的建议!