私は準備されたステートメントを使用するためにMySQLiオブジェクトでPHPバックエンドを使用しています。ただし、問題があります。次のようなクエリが必要です。
IF ( SELECT count(*) FROM table <= 3)
INSERT INTO table2 VALUES(5,2)
// dont do anything if (SELECT count(*) FROM table > 3)
最初に構文エラーが発生し、何が問題なのか理解できませんか?
私は準備されたステートメントを使用するためにMySQLiオブジェクトでPHPバックエンドを使用しています。ただし、問題があります。次のようなクエリが必要です。
IF ( SELECT count(*) FROM table <= 3)
INSERT INTO table2 VALUES(5,2)
// dont do anything if (SELECT count(*) FROM table > 3)
最初に構文エラーが発生し、何が問題なのか理解できませんか?
$query = mysql_query('SELECT COUNT(*) AS num FROM `myTable`');
$row = mysql_fetch_assoc($query);
$total = $row['num'];
if($total <= 3)
{
// Insert statament
}
面倒な作業は MySQL に任せ、データベースとの通信はできるだけ避けてください。
19.2に進みます。ストアド ルーチン (プロシージャと関数) を使用して、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;