MySQL UPDATE不会改变任何东西

时间:2010-07-13 04:43:31

标签: php mysql

我正在尝试更新数据库条目,但它不会改变任何内容。我没有错误让我感到困惑......

代码:

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);
}

感谢您的回答 /维克多

3 个答案:

答案 0 :(得分:9)

您的直接问题是SQL语法。阅读documentation on UPDATES并用逗号替换AND。

您的次要但可能更大的问题是您正在使用不受信任的用户输入构建查询。这是SQL注入攻击的一个秘诀。改为使用绑定变量。

答案 1 :(得分: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'";

答案 2 :(得分:-4)

如果没有错误,则表示没有记录匹配WHERE条件

或者您可能没有$ _GET ['edit'] varibale set