2012-04-19 21 views
1

PHPのバックエンドを使用していますが、MySQLiオブジェクトでは準備済みの文を使用しています。IF条件を挿入する、ELSEは何もしない、MySQLi

IF (SELECT count(*) FROM table <= 3) 
    INSERT INTO table2 VALUES(5,2) 
// dont do anything if (SELECT count(*) FROM table > 3) 

それは初めで構文エラーを与え、間違っているものを理解することはできません。しかし、私は問題を抱えている、私のようなクエリが必要ですか?

+1

ご質問は全く意味がありません。問題を別の方法で表現しようとすることはできますか? – liquorvicar

+0

@liquorvicar here you go – Mustafa

+0

通常のSQLではこれを行うことはできません - PHPのように 'if'部分を行うには一般的に言語が必要です。しかし、MySQLで[ストアドプロシージャ](https://duckduckgo.com/?q=mysql+stored+procedure)を使用することができます。これはあなたが気にしていたものですか? – halfer

答えて

3

MySQLは汚い作業を行い、できるだけ多くのデータベースとの通信を避けてください。

19.2. Using Stored Routines (Procedures and Functions)にアクセスし、PL/SQLと同様の方法を学んでください。お互いに依存する複数のクエリがある場合、問題を解決するのがずっと簡単になります。

学習後、テーブルに挿入する前に論理式をチェックするストアドプロシージャを記述することができます。そのような

何か(ここでは多分制御のうち構文 - ちょうど例):

CREATE PROCEDURE myProcedure(IN myCap INT) 
BEGIN 
    DECLARE rowCount INT; 
    SELECT count(*) FROM table INTO rowCount; 
    IF rowCount <= myCap THEN 
    INSERT INTO [...] 
    END IF; 
END; 
3
$query = mysql_query('SELECT COUNT(*) AS num FROM `myTable`'); 
$row = mysql_fetch_assoc($query); 
$total = $row['num']; 
if($total <= 3) 
{ 
    // Insert statament 
} 
+0

私は1つのクエリソリューションを探していましたが、これを行うつもりです。 – Mustafa

+1

私はあなたに助けてくれました。 –

関連する問題