데이터베이스 업데이트를 위한 PHP 준비 명령문
이 토론에서는 SQL 삽입과 같은 취약점을 방지하기 위해 PHP에서 준비된 명령문을 적절하게 활용하는 것에 중점을 둡니다. 문제의 코드 블록의 목적은 준비된 문을 사용하여 단일 필드로 데이터베이스 테이블을 업데이트하는 것입니다.
제공된 코드에서 class.Scripts.inc 파일의 update() 메서드는 준비된 문을 사용합니다. 데이터 덤프 테이블을 업데이트하려는 시도의 문입니다. 그러나,bind_param() 메소드 수행 중 잘못된 매개변수 순서로 인해 실행이 실패합니다. 현재 코드는 $id 및 $content 순서로 매개변수를 바인딩하지만 SQL 문에서는 반대 순서로 매개변수를 바인딩하므로 레코드 식별이 잘못되고 행이 영향을 받지 않습니다.
아래의 수정된 코드는 이 문제를 해결합니다. 매개변수를 올바른 순서로 바인딩하고 추가 오류 처리 기능을 제공하면 오류가 발생합니다.
<code class="php">$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?"); /* Always check whether the prepare() succeeded */ if ($stmt === false) { trigger_error($this->mysqli->error, E_USER_ERROR); return; } $id = 1; /* Bind our params */ /* Bind variables in the same order as SQL params */ $stmt->bind_param('si', $content, $id); /* Set our params */ /* No escaping needed when using prepared statements */ $content = $_POST['content'] ?: ''; /* Execute the prepared Statement */ $status = $stmt->execute(); /* Always check whether the execute() succeeded */ if ($status === false) { trigger_error($stmt->error, E_USER_ERROR); } printf("%d Row inserted.\n", $stmt->affected_rows);</code>
특정 문의 사항에 대해:
위 내용은 PHP 준비 명령문 데이터베이스 업데이트에서 잘못된 매개변수 순서를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!