2010-07-13 129 views
1

我试图更新数据库条目,但它不会改变任何东西。我越来越没有错误,这些错误让我困惑...MySQL UPDATE不会改变任何东西

代码:

if(isset($_GET['edit'])) 
{ 
    $idn = $_GET['id']; 
    $namn = $_POST['namn']; 
    $adress = $_POST['adress']; 
    $postnummer = $_POST['postnummer']; 
    $postort = $_POST['postort']; 
    $email = $_POST['email']; 
    $status = 0; 
    echo $namn; 
    $sql="UPDATE ordrar SET namn = '$namn' AND adress = '$adress' AND postnummer = '$postnummer' 
    AND postort = '$postort' AND email = '$email' AND status = '$status' WHERE id = '$idn'"; 
    if (!mysql_query($sql)) 
    { 
     die('Error: ' . mysql_error()); 
    } 
    //$referer = $_SERVER['HTTP_REFERER']; 
    //header('Location:'. $referer); 
} 

感谢答案 /维克托

+0

您是否捕获$ sql并直接针对数据库运行以验证是否发生了更新? – buckbova 2010-07-13 04:47:59

+0

你拼写“地址”是否正确? – amphetamachine 2010-07-13 05:09:09

+0

@amphetamachine如果没有,它会抛出一个错误。去搞清楚。 – 2010-07-13 05:14:07

回答

9

立即解决问题是SQL语法。阅读documentation on UPDATES并用逗号替换AND。

您的第二个问题,但可能更大的问题是您从不可信的用户输入构建查询。这是SQL注入攻击的秘诀。改用绑定变量。

+0

是的,我自己的消毒功能被删除,因为我认为这是问题。第一段工作了:)谢谢! – 2010-07-13 04:50:16

4

参考this

语法更新

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] 

您的查询应该

$sql="UPDATE ordrar SET namn = '$namn' , adress = '$adress' , 
      postnummer = '$postnummer' , postort = '$postort' , email = '$email' , 
      status = '$status' WHERE id = '$idn'"; 
-4

,如果你得到任何错误它意味着没有记录匹配WHERE条件

,或者你'可能没有$ _GET ['edit'] varibale集

+1

但WHERE子句isent什么是错的。 – 2010-07-13 04:55:22

+0

@优胜者不,这是你错了。 – 2010-07-13 04:57:13

+0

我看不到你在哪里写... – 2010-07-13 05:07:42

相关问题