2013-07-07 3 views
0

같은 웹 페이지에 두 개의 함수가 있습니다. 각 함수는 어느 버튼을 눌렀는지에 따라 동일한 데이터베이스에서 하나의 다른 테이블을 업데이트합니다.PHP 업데이트 쿼리, 코드 개정

이 기능은 하나 개의 테이블을 수정하고 작동합니다

function SaveMItem() 
    { 
    $DayOfWeekNumber = 0; 
     if ($_POST['selDayOfTheWeek']) 
     {$DayOfWeekNumber = $_POST['selDayOfTheWeek'];} 

     mysql_query("UPDATE tblMItem SET ItemText = '" . $_POST['txtFirstOne'] . "' WHERE MenuItemID = " . (1 + $DayOfWeekNumber)); 
      echo "SaveMItem Ok"; 
    } 

function SavetblAnnouncement(){ 

    mysql_query("UPDATE TblAnuncios SET Title=".$_POST['txtAnnouncementTitle']. ",Content=".$_POST['txtAnnouncementContent']." WHERE 1"); 

    echo "Completed announcement" ; 
    } 

는 내가 좋아 메시지 SaveMItem를 볼 수 있으며 표에 새 값을 저장 SaveMItem 버튼을 누르면.

SavetblAnnouncement 버튼을 누르면 Completed announcement 메시지가 표시되지만 TblAnuncios 테이블은 업데이트되지 않습니다.

동일한 파일에 있기 때문에 데이터베이스가 동일하고 SaveMItem 함수가 테이블을 업데이트 할 수 있습니다. DB에 대한 연결이 정상이라고 가정합니다.

누구든지 내가 뭘 잘못하고 있는지 알려줄 수 있습니까?

미리 감사드립니다.

+0

업데이트 쿼리는 전체 테이블의 모든 레코드를 동일하게 업데이트해야합니다. –

+0

실제로 진행되고있는 작업을 분석하기 전에 오류 처리를 사용하십시오! 당신은 맹목적으로 일들이 작동한다는 것을 맹목적으로 신뢰합니다. 그리고 지금 당신은 틀린 것 같네요. MySQL은 확실히 오류를 던지고 잘못된 것을 알려주지 만 여러분은 듣지 않습니다! phps mysql 확장을위한 설명서를 확인하고 오류를 탐지하는 방법을 읽으십시오. – arkascha

+0

그 외에도 : mysql 확장은 가치가 떨어지고 대신 mysqli 또는 PDO를 사용하고 코드는 현재 SQL 주입에 광범위하게 열려 있습니다! – arkascha

답변

1

값 주변에 따옴표가 없습니다.

$title = mysql_real_escape_string($_POST['txtAnnouncementTitle']); 
    $txt = mysql_real_escape_string($_POST['txtAnnouncementContent']); 
    mysql_query("UPDATE TblAnuncios SET Title='".$title. "',Content='".$txt."' WHERE 1"); 

또한 SQL 인젝션을 방지하고 제목이나 텍스트에 인용 문자가 포함되어 있으면 쿼리를 올바르게 만들어야합니다.