插入IF条件,ELSE什么都不做,MySQLi

时间:2012-04-19 20:26:01

标签: php mysql if-statement sql-update

我正在使用PHP后端,MySQLi对象使用预处理语句。但是,我有一个问题,我需要一个像:

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

它在开始时出现语法错误,无法理解有什么问题?

2 个答案:

答案 0 :(得分:3)

$query = mysql_query('SELECT COUNT(*) AS num FROM `myTable`');
$row = mysql_fetch_assoc($query);
$total = $row['num'];
if($total <= 3)
{
    // Insert statament
}

答案 1 :(得分: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;