2016-04-05 12 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スクリプト言語のバージョン5.2.6
  • MySQLデータベースバージョン5.0.51b

私は周りを探してきたが、無駄にし、条件はMySQLのdevのウェブサイトに記載された場合、私はこれに新しいですし、それが狂った私を駆動します。..全く

を支援されていません!私が試みたすべての異なった質問は失敗しました。それは正しい構文ではありません。

stackExchangeや他のウェブサイトの問題について多くの回答がありましたが、間違っています。また、VB.netのレッスンからこの構造を覚えています。 MySQLについてはどうですか?今までのところ誰もが類似の構造を列挙し、MySQLのために働いていると言いました。私はこのコミュニティの回答からMySQLのラベルを付けました。これは私が試した多くのうちの1つです。

私は本当にあなたの助け

*をいただければ幸いです:Usage of MySQL's "IF EXISTS"

+2

0より大きいが、あなたがリンクに* SnowyRの*の答えをしようとしなかったのですかどうかを確認するために比較でき上記の –

+0

あなたのIF条件が評価しようとしていることは分かりません。 – Langosta

+0

はそれを 'function($ i、$ j);でmysqlにカプセル化し、phpから呼び出します。 –

答えて

0

私が最初に考えたのは、あなたが実際にあなたの条件ロジックを利用するものにあなたのSELECTのリターンを比較していないだろう。クエリが値を返すかどうかを調べるだけですか?値が返されない場合は、新しいレコードを挿入します。それ以外の場合は、更新します。たぶん使用

はNULLされていないか、選択を頼りに参照するにはチェックが表示さどのように多くの行とそれが

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