Question

mysqli_query($tradeL,"UPDATE openor SET cur2 = CASE 
               WHEN $val1e<cur2 THEN cur2-$val1e
               WHEN $val1e>cur2 THEN $val1e-cur2
               WHEN $val1e=cur2 THEN '0'
               ELSE cur2
                WHERE id='2' END");

gives the following error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='2' END' at line 7

I just can't see the mistake.

Was it helpful?

Solution

You need to end your case first then use where clause

UPDATE openor 
    SET cur2 = CASE                
    WHEN $val1e<cur2 THEN cur2-$val1e
    WHEN $val1e>cur2 THEN $val1e-cur2
    WHEN $val1e=cur2 THEN '0'
    ELSE cur2 END
    WHERE id='2'

Also you can skip your else part

UPDATE openor 
    SET cur2 = CASE                
    WHEN $val1e<cur2 THEN cur2-$val1e
    WHEN $val1e>cur2 THEN $val1e-cur2
    WHEN $val1e=cur2 THEN '0'
    END
    WHERE id='2'

OTHER TIPS

Why overcomplicate things? Just use MySQL's ABS() function:

UPDATE openor SET cur2 = ABS(cur2 - $val1e) WHERE id = 2
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top