쿼리:
PHP에서 테이블 이름을 바인딩할 수 있나요? PDO?
문제:
bindValue()를 사용하여 테이블 이름을 바인딩하려고 하면 오류가 발생합니다. 사용자 입력을 통해 테이블 이름을 동적으로 설정하려고 할 때 문제가 발생합니다.
해결책:
아니요, 테이블 이름을 직접 바인딩하는 것은 불가능합니다.
이는 사용자가 데이터베이스의 임의 테이블에 액세스하도록 허용할 수 있으므로 보안 문제 때문입니다. 대신 다음을 수행하는 것이 좋습니다.
추상화 계층을 사용한 보안 구현:
다음을 위한 보안 클래스를 생성하려면 테이블 데이터에 액세스하려면 다음 단계를 따르세요.
abstract class AbstractTable { private $table; private $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function describe() { return $this->pdo->query("DESCRIBE `" . $this->table . "`")->fetchAll(); } } class SomeTable extends AbstractTable { private $table = 'sometable'; }
이제 클래스를 사용하여 테이블 데이터에 안전하게 액세스하세요.
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
위 내용은 PHP PDO에서 테이블 이름을 바인딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!