2014-05-20 6 views
-5

디렉터리에 사용자를 추가하고 편집 할 수있는 디렉터리 항목 양식이 있습니다. 기존 사용자와 모든 속성을 볼 수 있지만 새 사용자 데이터를 입력하거나 기존 사용자 데이터를 편집 할 때 데이터베이스를 변경할 수 없습니다. 주어진 정보가 충분하지 않은 경우 알려줘sql 쿼리를 실행할 수 없습니다

case "submit": 
    //user clicked the "submit" button on either the "edit record" page or "add new record" page. 
    $id=$_POST['ID']; 
    $FName=$_POST['Fname']; 
    $LName = $_POST['Lname']; 
    $Position =$_POST['position']; 
    $Phone=$_POST['phone']; 
    $Email=$_POST['email']; 
    $Site = $_POST['site']; 
    $Room=$_POST['room']; 
    $Bio=$_POST['bio']; 
    $Status=$_POST['status']; 
    $DeptID=$_POST['DeptID']; 
    $SortOrder=$_POST['SortOrder']; 
    $Image = $_FILES['image']['name']; 
    $Old_image = $_POST['old_image']; 
    $edit=$_POST['edit']; 
    if($Image == '') 
     $Image=$Old_image; 

    if($edit) { 
     //user came from the "edit record page" 
     //update user information in database 
     $sql = mysql_query("UPDATE directory SET 
       FName = '$FName', LName = '$LName', position='$Position', 
       phone = '$Phone', email = '$Email', site = '$Site', room = '$Room', 
       bio = '$Bio', status = '$Status', DeptID = '$DeptID', SortOrder = '$SortOrder', 
       image = '$Image' 
      WHERE ID = '$id';" 
     ); 

     //uploads staff photo only if staff photo has been changed by user. 
     img_upload($Old_image); 
     $Result = mysql_query($sql, $ownDB) or die(mysql_error()); 
     if($sql){ 
      //info successfully updated 
      echo "Record Modified."; 
     } 
    } else if($add) { 
     //add new user to database 
     $sql = mysql_query("INSERT INTO directory 
          (FName, LName, position, 
          phone , email , site, 
          room , bio , 
          status, DeptID , SortOrder, 
          image) 
          VALUES ('$FName', '$LName', '$Position', 
            '$Phone', '$Email', '$Site', '$Room', 
            '$Bio', '$Status', '$DeptID', '$SortOrder', '$Image');"); 
     //uploads staff photo only if staff photo has been changed by user. 
     img_upload(); 
     $Result = mysql_query($sql, $ownDB) or die(mysql_error()); 

     if($sql) 
      //user successfully added 
      echo "Record Added."; 
    } 
    break; 
+0

질문을 정교하게 작성하십시오. – Nickool

+1

특정 오류 메시지가 나타납니다? –

+0

페이지를 실행하는 동안 오류가 발생하지 않았습니다. 페이지를 편집 할 수 있지만 저장된 모든 사용자 세부 정보를 볼 수 있지만 페이지를 제출할 때 새로운 사용자 세부 정보를 저장하거나 편집 된 세부 정보를 저장할 수 없습니다 –

답변

1

여러 문제가 :

가) 취약 B

SQL injection attacks에) 잘못된 코드 :

이 :

$sql = mysql_query("UPDATE directory SET etc.... "); 

은 실제로 쿼리를 실행하고 명령문을 반환합니다. h andle, NOT 방금 ​​정의한 SQL 문자열입니다.

는 그런 다음이 $sql 핸들을, 또 다른 쿼리로 다시 실행하려고 : 완전히 잘못된

$Result = mysql_query($sql, $ownDB) or die(mysql_error()); 

합니다. mysql_query은 결과 핸들이 아닌 SQL STRING을 예상합니다.

당신이 원하는 : 대신

$sql = "UPDATE blah blah blah"; 
$result = mysql_query($sql) or die(mysql_error()); 

. 이제 $sql은 문자열 정의이며 함수 호출 결과가 아닙니다.

c) 더 이상 사용되지 않는 mysql _ *() 함수를 사용하고 있습니다. 하지마. mysqli (i 참고) 또는 PDO로 전환하십시오.

+0

멋지게 보입니까? $ Query = "UPDATE directory SET \t 등 ....) "; \t \t \t \t \t \t $ 결과 =는 mysql_query) ($ 질의, $ ownDB) 또는 ((mysql_error를 다이) \t \t \t \t \t \t \t \t ($ 쿼리) {경우 \t \t \t \t \t \t \t \t \t // 정보가 성공적으로 업데이트되었습니다. \t \t \t \t \t \t \t \t \t echo "Record Modified."; } –

관련 문제