2011-07-29 5 views
0

는 내가 테이블에서 레코더를 업데이트 쓴 일부 MySQL을위한 PHP 클래스는 업데이 트 같은 제안 모든 것은 단지 1 작동하지 너무 잘 그 기능을 확인 될 것입니다 테이블 에 데이터를 삽입 쓴내 mysql 클래스 함수 중 하나에 문제가 있습니까?

function update($table=null,$array_of_values=array(),$conditions='FALSE') { 
     if ($table===null || empty($array_of_values)) return false; 
     $what_to_set = array(); 
     foreach ($array_of_values as $field => $value) { 
      if (is_array($value) && !empty($value[0])) $what_to_set[]="'$field'='{$value[0]}'"; 
      else $what_to_set []= "'$field'='".mysql_real_escape_string($value,$this->con)."'"; 
     } 
     $what_to_set_string = implode(',',$what_to_set); 
     return $this->execute("UPDATE $table SET $what_to_set_string WHERE $conditions"); 
    } 

일부 필드를 업데이트하는 데 사용할 때 오류가 반환되지 않고 모두 작동하지 않습니다.

+0

데이터베이스 컨트롤러를보아야합니다. – afuzzyllama

+1

문제 해결 방법이지만 실제로 실행중인 문을 인쇄하십시오. 그런 다음 mysql 명령 줄에서 정확한 명령문을 실행하고 (기본적으로 그림 밖으로 PHP를 가져옴) 불평하는 곳을 확인하십시오. 또한 php는 오류를 표시하기 위해 php.ini 파일에 설정된 적절한 오류보고 수준을 가져야합니다. –

+0

내가 벌써 케빈과 내가 한 일은 커다란 코멘트에 대해 고마워한다. – Marco

답변

0

열 이름을 작은 따옴표로 묶었습니다. 별명을 선언 할 때를 제외하고 식별자는 작은 따옴표로 묶지 않습니다.

UPDATE table SET color = 'red' 

하지

코드를 생성하는 것입니다
UPDATE table SET 'color' = 'red' 

. 예약어를 식별자로 사용하려면 '작은 따옴표'가 아닌`역 따옴표 '로 묶으십시오.

+0

조언을 주셔서 감사하지만 아직 작동하지 않는다. – Marco

+0

1) 나는 모르는 이래로 더 이상의 도움을 줄 수 없다. 당신이 올바른 변경을했는지 여부 –

+0

2)이 함수는 존재하지 않아야합니다. PDO 또는 mysqli 준비 문을 사용하십시오. 당신은 이것을 스스로 굴릴 필요가 없으며, 당신은 그것을 잘하지 못하고 있습니다. 모든 값은 작은 따옴표로 묶이지 않습니다. –

관련 문제