UPDATE SQL语句失败并带有变量

时间:2014-09-19 09:33:03

标签: mysql sql mysqli

$q = 'UPDATE dashboard SET a= '.$a.' AND 
      UPDATE dashboard SET b= '.$b.' AND
      UPDATE dashboard SET c= '.$c.' AND 
      UPDATE dashboard SET d= '.$d;

我的连接哪里出错了?

2 个答案:

答案 0 :(得分:0)

每个列都不使用UPDATE语法。相反,你必须使用类似的东西:

q = 'UPDATE dashboard SET a= '.$a.', 
                          b= '.$b.',
                          c= '.$c.',
                          d= '.$d;

当然,如果$a,则可能需要添加引号,...变量可能包含字符。

来自MySQL --> 13.2.10 UPDATE Syntax

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

当您使用mysqli(好!)时,您应该使用预准备语句来保证安全:

$sql = 'UPDATE dashboard SET a = :a, b = :b, c = :c, d = :d';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':a' => $a, ':b' => $b, ':c' => $c, ':d' => $d));

有关详细信息,请参阅PDO::prepare in php.net manual

答案 1 :(得分:0)

它应该是类似的东西。

$q = 'UPDATE dashboard SET a= '.$a.', b= '.$b.', c= '.$c.', d= '.$d;

你是否错过了where条件,或者你想要更新所有记录?

更新

$emp_id = $_POST['emp_id'];
$emp_salary = $_POST['emp_salary'];

$sql = "UPDATE employee ".
   "SET emp_salary = $emp_salary ".
   "WHERE emp_id = $emp_id" ;