我正在使用PHP后端,MySQLi对象使用预处理语句。但是,我有一个问题,我需要一个像:
这样的查询IF ( SELECT count(*) FROM table <= 3)
INSERT INTO table2 VALUES(5,2)
// dont do anything if (SELECT count(*) FROM table > 3)
它在开始时出现语法错误,无法理解有什么问题?
答案 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;