2016-02-09 31 views
-1

需要幫助的這樣的:在我的SQL表我有這樣的計劃,並寫在金屬加工液,TThS,太陽我希望它被過濾,這樣只有今天的時間表纔是輸出...例如今天是星期二,所以TThS時間表正在輸出。希望你能幫助我。簡稱天,TThS(這是我的課程表)

+0

什麼你試過這麼遠嗎? – vard

+0

我真的沒有對如何做到這一點任何想法... :( –

+0

如金屬加工液=(「星期一」,「星期三」,「星期五」) –

回答

0

您的日程安排時間存儲方式的問題是您無法執行簡單的LIKE %T%,因爲它也會獲得日程安排Th

一個可能的解決方案是使用MySQL REGEXP週二的特定情況下(T後面沒有h)和星期六(S後面不un)。

基本上你將建立應該被用在where子句的數組取決於星期幾:

$where_date_clauses = array(
    1 => 'LIKE "M%"', 
    2 => 'REGEXP "T(?!h)"', 
    3 => 'LIKE "%W%"', 
    4 => 'LIKE "%Th%"', 
    5 => 'LIKE "%F%"', 
    6 => 'REGEXP "S(?!un)"', 
    7=> 'LIKE "%Sun"' 
); 

這裏的正則表達式使用負先行模式 - 如果字符沒有立即將只匹配其次是前瞻內容。

,然後建立您的查詢是這樣的:

$sql = 'SELECT * FROM schedules_table WHERE schedule ' . $where_date_clauses[date('N')]; 

date('N')返回星期天數。

旁註

下面是如何使用PDO設置您的查詢的例子:

try { 
    $dbh = new PDO('mysql:dbname=your_db_name;host=your_db_host', 'mysql_user_name', 'mysql_user_password'); 
    $sth = $dbh->prepare('SELECT * FROM block_subject2 where id_number = ? ORDER BY timed DESC LIMIT 1'); 
    $sth->execute(array(
     (int) $_SESSION['stud_id'] 
    )); 
    $row = $sth->fetch(); 
} catch(PDOException $e) { 
    echo 'Failed to connect to DB: ' . $e->getMessage(); 
} 
+0

是否與我現在使用的兼容?即時通訊使用簡單的php代碼... $ result8 = mysql_query(「select * from block_subject2 where id_number ='$ _ SESSION [stud_id]'AND day ='$ where_date_clauses [日期( 'N')]」 ORDER BY timed DESC limit 1「); –

+0

$ sql ='SELECT * FROM schedules_table WHERE schedule'。 $ where_date_clauses [日期( 'N')]; 我如何將它轉換爲這樣的代碼> $ result8 = mysql_query(「select * from block_subject2 where id_number ='$ _ SESSION [stud_id]'AND day ='$ where_date_clauses [date('N')] 'ORDER BY timed DESC limit 1「); 堂妹它不是工作:( –

+0

你不應該在你的查詢中使用'='經營者 - 運營商是建立在'$ where_date_clauses'陣列('LIKE','REGEXP')看看我寫的查詢。例如, – vard

相關問題