我在php $newtotal
中有一个动态变量。当此变量大于我的MAX数据库整数
INSERT
$newtotal = 4000;
mysql_query("INSERT INTO mytable (`DATE`, `TOTAL`, `DBTOTAL`) VALUES ('2012-03-09', '1', '$newtotal') WHERE MAX(`DBTOTAL`) < '$newtotal'");
即。在我的数据库中,我的MAX(DBTOTAL)= 4050;
这不应该INSERT
;当INSERT
更改为大于4050时,它也应正确$newtotal
但是我在任一变量编号上都会出现语法错误。需要这里的语法帮助。
答案 0 :(得分:2)
您无法在WHERE
语句中使用INSERT
子句。您需要检查值以查看是否要插入,并在满足条件时执行此操作。
例如:
$result = mysql_query("
SELECT MAX(DBTOTAL)
FROM table
");
list($max) = mysql_fetch_num($result);
if ($max < $newtotal) {
mysql_query("
INSERT INTO table (`DATE`, `TOTAL`, `DBTOTAL`)
VALUES ('2012-03-09', '1', '$newtotal')
");
}
答案 1 :(得分:2)
您可以根据SELECT
而非提供VALUES
来执行条件插入。
INSERT INTO mytable (`DATE`, `TOTAL`, `DBTOTAL`)
SELECT '2012-03-09', '1', '$newtotal' FROM mytable
WHERE MAX(`DBTOTAL`) < '$newtotal'
答案 2 :(得分:0)
据我所知,您不能将WHERE
与INSERT
一起使用。 if条件应该可以解决问题:
mysql_query("
IF '$newtotal' > (SELECT MAX(`DBTOTAL`) FROM mytable)
BEGIN
INSERT INTO mytable (`DATE`, `TOTAL`, `DBTOTAL`) VALUES ('2012-03-09', '1', '$newtotal')
END
");
答案 3 :(得分:0)
这就行了;
INSERT INTO mytable
SELECT '2012-03-10', '1', 4051 FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM mytable m WHERE m.dbtotal >= 4051
);
演示here。