집 >데이터 베이스 >MySQL 튜토리얼 >PDO에서 mysql_real_escape_string을 바꾸는 방법: 해결책으로 준비된 명령문?
mysql_*에서 PDO로 전환하는 과정에서 mysql_real_escape_string과 직접적으로 동등한 것이 없어서 딜레마에 직면할 수 있습니다.
직접 등가물 없음
기술적으로 PDO::quote()가 있지만 사용이 제한됩니다. 진정한 해결책은 준비된 문을 올바르게 구현하는 것입니다.
Prepared 문은 주입으로부터 보호
PDO는 준비된 문과 함께 사용될 때 본질적으로 MySQL 주입을 방지합니다. 추가 탈출이 필요합니다. 준비된 문은 입력 매개변수를 자리 표시자에 바인딩하여 악의적인 입력이 SQL 명령으로 해석되는 것을 방지합니다.
예: PDO에서 준비된 문 사용
다음 코드는 보안 데이터베이스를 보여줍니다. 준비된 문을 사용한 쿼리:
<code class="php"><?php $db = new \PDO("mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx", [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); if ($_POST && isset($_POST['color'])) { $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); $stmt->execute(array($_POST['color'])); $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC); var_dump($cars); } ?></code>
준비된 문의 이점
추가 고려 사항
결론
PDO의 준비된 문은 mysql_real_escape_string과 같은 함수가 필요 없이 데이터베이스 쿼리를 위한 강력하고 안전한 메커니즘을 제공합니다. 이 접근 방식을 채택하면 SQL 주입을 효과적으로 방지하고 데이터 무결성을 유지할 수 있습니다.
위 내용은 PDO에서 mysql_real_escape_string을 바꾸는 방법: 해결책으로 준비된 명령문?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!