2011-01-24 4 views
0

내가 알아 내지 못하는 문제가 있습니다. 사용자가 선택할 수있는 코드가 있습니다. 어떤 유형의 과일을 가장 좋아하는지 말해 보겠습니다. 이전에 '사과'를 좋아하는 것으로 선택하고 '사과'를 '오렌지'로 변경하려는 경우 스크립트가 잘 수행됩니다.PHP MySQL 업데이트 문제

그러나 '사과'를 이미 선택했을 때 '사과'를 선택하면 MYSQL 업데이트 호출이 중단되고 오류가 반환됩니다. 동일한 데이터로 자체적으로 쓰지 않아 새로운 값이 고유해야하는 것과 같습니다. 나는 여기에 업데이트 비트입니다 .... 손실에있어 : ​​

// UPDATE THEIR FRUIT SELECTION... 
    $q = "UPDATE account SET fav_fruit='" . $row['fruit'] . "' WHERE act_id=$act_id LIMIT 1";  
    $r = @mysqli_query ($dbc, $q); 
    if (mysqli_affected_rows($dbc) == 1) { // If it ran OK. 
      echo 'success!'; 

    } else { 
     echo 'oops!'; 
    } 

다시, 이것은 새로운 선택으로 너무 오래 작동하고 무엇을 데이터베이스에있어이 동일하지 않습니다. 그들이 있다면 : 나는 똥을! 오류.

+1

어떤 오류가 있습니까? 왜'mysqli_query' 전에'@'가 필요한가요? – zerkms

+0

오류는 정체되지 않습니다 - 내 자신의 텍스트가 아닌 mysql 표준 오류 : "사용자가 시스템 오류로 인해 업데이트 할 수 없습니다." – WillHerndon

+0

오류를 억제하기 위해 @를 사용하는 것은 대개 싫은 일입니다. 스크립트 나 PHP.ini에서'error_reporting()'을 none으로 설정하는 것이 훨씬 낫습니다. –

답변

1

필드에 이미 포함 된 값을 포함하도록 필드를 업데이트해야하는 이유는 무엇입니까? 관계없이 테이블 구조를 변경하여이 문제를 해결할 수 있습니다. fav_fruit 열에서 고유 플래그를 제거해야합니다.

+0

데이터베이스를 검사했는데 해당 열이 고유하다고 표시되지 않았습니다. – WillHerndon

+0

이미 저장된 값으로 값을 업데이트해야하는 이유가 있습니까? –

+0

종류 - 다른 값을 선택하고 필요할 때마다이를 변경할 수 있어야합니다. 근본적으로 말하는 방법이 있다면 - "이봐 요, 당신은이 선택을 선택했습니다,하지만 다른 사람들이 있습니다"그리고 이미 저장되어있는 값을 버리십시오. – WillHerndon