PHP PDO - 테이블 이름 바인딩
PDO(PHP Data Object)에서 테이블 이름을 준비된 테이블 이름에 바인딩할 수 있습니까?
답변:
아니요, PDO에서는 테이블 이름을 바인딩하는 것이 불가능합니다.
테이블 이름을 바인딩하면 다음과 같은 보안 위험이 발생합니다. 이를 통해 사용자는 데이터베이스의 모든 테이블에 액세스할 수 있습니다. 승인된 테이블만 쿼리할 수 있도록 테이블 이름을 화이트리스트에 추가하는 것이 좋습니다.
대체 접근 방식:
테이블 메타데이터에 안전하게 액세스하려면 테이블에 대한 상위 클래스 생성을 고려하세요. 다음과 같은 테이블 클래스:
abstract class AbstractTable { private $table; private $db; public function __construct(PDO $pdo) { $this->db = $pdo; } public function describe() { return $this->db->query("DESCRIBE `$this->table`")->fetchAll(); } }
그런 다음 각 테이블에 대해 다음과 같은 특정 클래스를 만듭니다. as:
class MyTable extends AbstractTable { private $table = 'my_table'; }
이 접근 방식을 사용하면 테이블 메타데이터에 안전하게 액세스할 수 있습니다.
$pdo = new PDO(...); $table = new MyTable($pdo); $fields = $table->describe();
위 내용은 PHP PDO 준비 문에 테이블 이름을 바인딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!