2016-04-05 7 views
0

Я пытаюсь выполнить запрос в MySQL, но он продолжает говорить мне, что я использую неправильный синтаксис, я пробовал искать сообщество MySQL, но я не получаю ничего полезного ... большинство ответов, которые я нахожу в google для других баз данных, но они маркируют их для «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 Script Language Version 5.2.6
  • База данных MySQL 5.0.51b

Я смотрел вокруг, но безрезультатно, и если условие указано на сайте Dev 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

Моей первая мысль была бы вы не сравниваете селекты возвращения к чему-либо на самом деле использовать вашу условную логику. Вы просто хотите посмотреть, возвращает ли ваш запрос значения? Если он не возвращает значение, вы вставляете новую запись, иначе вы обновляете.

Может использовать НЕ NULL или чек, чтобы увидеть рассчитывать на выбор, чтобы увидеть, сколько строк и сравнить, чтобы увидеть, если это больше, чем 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

Nope .. еще синтаксическая ошибка>. < – bakz

Смежные вопросы