2010-04-11 4 views

답변

3

당신의 절은 잘못이고, 당신은 또한 당신의 논리가, 결함이 당신이 WHERE a=1 AND b=2 AND c=3

을 원하는 WHERE a=1, b=2, c=3를 작성하지 않기 때문에 당신의 절은 일반적으로 더 같은 것 WHERE ID = X (에서 테이블에서 행 데이터를 업데이트하는 순간 행 데이터가 이미 업데이트되어있는 행 데이터와 동일합니다.) -

또한 SQL을 이스케이프 처리하는 방법을 배웁니다. 제대로 끈을 쓰면에 취약하게됩니다.

1

oedo에서 설명한 문제뿐만 아니라 심각한 SQL 주입 문제도 발생합니다. SQL 문에 삽입하기 위해 문자열을 인코딩하려면 mysql_real_escape_string을 사용해야합니다 (이 아닌 htmlspecialchars). 또는 매개 변수화 된 쿼리를 사용하십시오.

htmlspecialchars()은 HTML 페이지로 출력하기 바로 전에 HTML 인코딩 텍스트입니다. 데이터베이스에 저장하기 위해 문자열을 HTML 인코딩해서는 안됩니다.

0

먼저 사용자에게 일종의 고유 식별자가 있습니까? 어쩌면 어떤 종류의 고객 ID일까요? 이를 사용하여 SQL을 더 명확하게 만들기 위해 WHERE 절에서 고객을 식별 할 수 있습니다.

두 번째로, 사용자가 데이터베이스에있는 것처럼 모든 회사를 정확하게 작성해야한다고 생각합니까? 왜냐하면 그것은 현재 디자인에서 기대하는 바입니다.

+0

나는 3db를 가지고있다. 두 번째 데이터베이스에서, 나는 id를 가지고있다. 내가 본 11 점의 형식을 가지고있다. 내가 11 점의 값을 바꾼다면,이 점은 업데이트되어야한다. 도움을주는 점 .Plz crt my 소스 코드. –

0

필드 값이 아닌 ID를 사용하여 레코드를 식별해야합니다. 많은 웹 사이트를 보면 대개 레코드를 식별하는 ID를 보냅니다. edit.php? id = 1284 또는 view.php? id = 1284 등

요약하면 해당 레코드 ID에 대해 데이터베이스에있는 값으로 채우는 양식을 갖게됩니다.

$UpdateQuery = "UPDATE customer SET name = '" . $name . "', address = '" . $address . "' ....... WHERE id = " . intval($_GET['id']); 

나는 그 숫자 만 값이 통과 할 수 있기 때문에 INTVAL가 추가 이유 : 당신이 그것을 편집하는 경우, 당신은 같은 편집 쿼리를 작성합니다. bobince가 멘토링 한 것처럼 SQL 인젝션을주의 깊게 살펴보고 mysql_real_escape_string이 쿼리에 입력 한 모든 문자열 값을 전달하도록하십시오.