php - 从mysql获取结果

标签 php mysql

我有下表(lecture_table)

------------------------------------------------------------------------
| lecture_name  | lecturer_name  | class              |day| start|end  |
|-------------- +--------------- +--------------------+----------------|
| Electronics 2 | Jhon Rayan     | Engineering Class 2| 0 | 8.5  |11.5 |
------------------------------------------------------------------------

我尝试在上表中构建一个关于日期的搜索页面,但遇到一些问题 我在数据库中使用的日期是一个整数(0表示星期日,1表示星期一......) 我需要在搜索面板中输入例如星期日,这意味着数据库中的 0,然后获取结果并将其显示为星期日而不是 0 我用来获取结果的查询如下

$raw_results = mysql_query("SELECT lecture_name, 
                                lecturer_name, 
                                class,
                                start, 
                                end, 
                                CASE day
                                    WHEN 0 THEN 'Sunday'
                                    WHEN 1 THEN 'Monday'
                                    WHEN 2 THEN 'Tuesday'
                                    WHEN 3 THEN 'Wednesday'
                                    WHEN 4 THEN 'Thursday'
                                    WHEN 5 THEN 'Friday'
                                    WHEN 6 THEN 'Saturday'
                                    ELSE 'Unknown'
                                END AS x
                        FROM lecture_table WHERE (`day` LIKE '%".$name."%')") or die(mysql_error());

那么我应该在上述查询之前使用什么将我的输入搜索从星期日转换为 0 以将我的条目与数据库进行比较。

最佳答案

您正在寻找这样的东西吗?

SELECT lecture_name, lecturer_name, class, start, end, day_name
 FROM lecture_table l JOIN 
(
    SELECT 0 day, 'Sunday' day_name UNION ALL
    SELECT 1, 'Monday' UNION ALL
    SELECT 2, 'Tuesday' UNION ALL
    SELECT 3, 'Wednesday' UNION ALL
    SELECT 4, 'Thursday' UNION ALL
    SELECT 5, 'Friday' UNION ALL
    SELECT 6, 'Saturday'
) d ON l.day = d.day
WHERE day_name = 'Sunday'

输出:

|  LECTURE_NAME | LECTURER_NAME |               CLASS | START |  END | DAY_NAME |
|---------------|---------------|---------------------|-------|------|----------|
| Electronics 2 |    Jhon Rayan | Engineering Class 2 |   8.5 | 11.5 |   Sunday |

Here is SQLFiddle demo


what if i want results for another day such as Monday,... how can i apply it

If you want only records for Monday

... WHERE day_name = 'Monday'

如果您想要几天的记录

... WHERE day_name IN('Monday', 'Wednesday', 'Friday')

当然,您将使用 php 变量插入查询字符串,而不是使用精确值,例如

$sql = "SELECT ... WHERE day_name = '$name'"; // Don't forget validate and sanitize user input

更好切换到PDO/mysqli并使用准备好的语句

关于php - 从mysql获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975706/

相关文章:

PHP strpos 匹配查询字符串文本模式

PHP DateTime createFromFormat不会自然消亡

php 日期函数返回错误值

javascript - 提交时不断加载但不返回数据

php - 令人困惑的 php/Mysql 时间算术行为

mysql - SQL外键错误?

mysql - 在 MySQL 中选择不同的对

mysql - 创建表中的 SQL DATETIME 导致解析错误

mysql - 将 SQL LIKE 运算符与 UPPER() 语法结合使用

php - 如何实现 Authorize.NET Hosted Payments iFrame & Laravel