Поле MySQL INSERT WHEN больше значения переменной php - PullRequest
0 голосов
/ 13 марта 2012

У меня есть динамическая переменная в php $newtotal.Я хочу INSERT, когда эта переменная больше, чем моя целочисленная база данных MAX

$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 правильно, когда $newtotal изменяется на больше, чем 4050, однако я получаю синтаксические ошибки на любой номер переменной.Нужна помощь с синтаксисом здесь.

Ответы [ 4 ]

2 голосов
/ 13 марта 2012

Вы можете сделать условную вставку, основываясь на SELECT вместо VALUES.

INSERT INTO mytable (`DATE`, `TOTAL`, `DBTOTAL`)
SELECT '2012-03-09', '1', '$newtotal' FROM mytable
WHERE MAX(`DBTOTAL`) < '$newtotal'
2 голосов
/ 13 марта 2012

Вы не можете использовать 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')
    ");
}
0 голосов
/ 13 марта 2012

Это сделает это;

INSERT INTO mytable 
  SELECT '2012-03-10', '1', 4051 FROM DUAL
  WHERE NOT EXISTS (
    SELECT * FROM mytable m WHERE m.dbtotal >= 4051
  );

Демо здесь .

0 голосов
/ 13 марта 2012

Насколько я знаю, вы не можете использовать 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
");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...