1

私は準備されたステートメントを使用するためにMySQLiオブジェクトでPHPバックエンドを使用しています。ただし、問題があります。次のようなクエリが必要です。

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

最初に構文エラーが発生し、何が問題なのか理解できませんか?

4

2 に答える 2

3
$query = mysql_query('SELECT COUNT(*) AS num FROM `myTable`');
$row = mysql_fetch_assoc($query);
$total = $row['num'];
if($total <= 3)
{
    // Insert statament
}
于 2012-04-19T21:33:42.277 に答える
3

面倒な作業は 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;
于 2012-04-19T21:52:36.087 に答える