2010-07-13 159 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