2016-04-05 54 views
0

我試圖執行一個查詢到MySQL,但它總是告訴我,我現在用的是錯誤的語法,我試圖尋找MySQL的社區,但我沒有得到任何有用的..大部分的答案我找到的谷歌是爲其他數據庫,但他們標籤爲「MySQL」,但它一直失敗。IF條件的MySQL不工作

這是我試圖執行語句:

 $statement = "IF (SELECT ttb_id FROM timetable WHERE ttb_week = $i AND ttb_time = $j) THEN 
         BEGIN 
          UPDATE types SET typ_name = '$subj' 
          WHERE typ_name = 'student'; 
         END; 
         ELSE 
         BEGIN 
          INSERT INTO types VALUES (null,`Yo`); 
         END; 
        "; 

錯誤:

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (SELECT ttb_id FROM timetable WHERE ttb_week = 0 AND ttb_time = 0) THEN ' at line 1 

我使用:

  • PHP腳本語言版本5.2.6
  • MySQL數據庫版本5.0.51b

我一直在四處尋找,但都無濟於事,和MySQL開發網站上所列的條件,如果不幫助所有..

我是新來這一點,它是推動我瘋了!我嘗試過的所有不同的查詢失敗..它從來沒有正確的語法。

我發現在stackExchange和其他網站的問題很多答案,但它永遠是錯的..還記得從VB.net教訓這個結構前一陣子,所以也許這是MSSQL?那麼MySQL呢?到目前爲止,每個人都列出了類似的結構,並表示它適用於MySQL,我從我的回答中得到了這個社區的答案,標籤爲MySQL,他聲稱它的工作。這是我嘗試過的許多方法之一。

我會很感激你的幫助

*:Usage of MySQL's "IF EXISTS"

+2

你有沒有嘗試* SnowyR的*答案的鏈接,你提到 –

+0

我不明白你的IF條件正在嘗試評估。 – Langosta

+0

封裝在'function($ i,$ j);'在mysql中,並從PHP調用它。 –

回答

0

我首先想到的是你沒有比較你的SELECT返回什麼實際利用自己的條件邏輯。你只是想看看你的查詢是否返回值?如果它不返回一個值,那麼你插入一個新的記錄,否則你更新。

也許使用IS NOT NULL或支票上看到SELECT COUNT,看看有多少行和比較,看看是否是大於0

IF (SELECT ttb_id FROM timetable WHERE ttb_week = $i AND ttb_time = $j IS NOT NULL) THEN 

IF (SELECT COUNT(*) FROM timetable WHERE ttb_week = $i AND ttb_time = $j) > 0 THEN 
+0

沒有...仍然語法錯誤>。< – bakz