집 >데이터 베이스 >MySQL 튜토리얼 >내 PDO 준비 문이 MySQL에 데이터를 삽입하지 못하는 이유는 무엇입니까?
MySQL에서 PDO 준비된 명령문 삽입 문제 해결
MySQL 준비된 문과 함께 PHP의 PDO를 사용하면 보안과 효율성이 제공되지만 삽입 문제가 발생할 수 있습니다. 이 가이드에서는 코드가 정확해 보이는데도 삽입이 실패하는 일반적인 문제를 다룹니다.
문제: INSERT
시도 후 데이터베이스 비어 있음
준비된 문을 사용하는 INSERT
이 데이터베이스를 채우지 않는 시나리오를 살펴보겠습니다.
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
이 코드는 작동하는 것처럼 보이지만 testtable
은 비어 있습니다.
해결책: 매개변수 바인딩
해결책에는 매개변수를 올바르게 바인딩하는 것이 포함됩니다. PDO 준비된 문에는 SQL 쿼리 내에 명명된 매개 변수(:param
) 또는 물음표(?
)와 같은 자리 표시자가 필요합니다. 그런 다음 이러한 자리 표시자는 execute()
메서드
두 가지 방법을 모두 사용하여 코드를 수정하는 방법은 다음과 같습니다.
<code class="language-php">// Using Named Parameters $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute(['fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18']); // Using Question Mark Placeholders $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);</code>
매개변수 바인딩을 활용하면 데이터가 안전하게 삽입되어 SQL 주입 위험을 완화하고 데이터 무결성을 유지할 수 있습니다. 실행 중에 값이 쿼리에 올바르게 대체됩니다.
위 내용은 내 PDO 준비 문이 MySQL에 데이터를 삽입하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!