MySQL INSERT WHEN字段大于php变量值

时间:2012-03-12 20:31:45

标签: php mysql insert

我在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但是我在任一变量编号上都会出现语法错误。需要这里的语法帮助。

4 个答案:

答案 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)

据我所知,您不能将WHEREINSERT一起使用。 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