2014-09-19 108 views
0
$q = 'UPDATE dashboard SET a= '.$a.' AND 
     UPDATE dashboard SET b= '.$b.' AND 
     UPDATE dashboard SET c= '.$c.' AND 
     UPDATE dashboard SET d= '.$d; 

我的连接出错了?更新SQL语句失败,变量

+0

为什么不是一个单一的更新命令的东西为'更新仪表盘设置=“someval”,B =“一些VAL” ...' – 2014-09-19 09:34:58

+1

而使用的mysqli这将是一个好主意也使用参数化准备语句。 – VMai 2014-09-19 09:36:20

+0

@VMai例子?? – user3522738 2014-09-19 09:40:31

回答

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

+0

你可以帮助这里http://stackoverflow.com/questions/25931203/sql-update-query-didnt-execute-but-return-no-errror ?? thx – user3522738 2014-09-19 10:03:55

+0

你可能需要'execute()'而不是'query()' – fedorqui 2014-09-19 10:34:17

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" ; 
+0

thx,所以在我的情况下没有连接错误? – user3522738 2014-09-19 09:39:47

+0

不会有任何级联错误。但请确保添加单引号以传递varchar数据。 – Ankith 2014-09-19 09:44:06

+0

你能帮我看看吗? http://stackoverflow.com/questions/25931203/sql-update-query-didnt-execute-but-return-no-errror – user3522738 2014-09-19 10:03:35