집 >데이터 베이스 >MySQL 튜토리얼 >내 PDO INSERT INTO 준비된 문이 작동하지 않는 이유는 무엇입니까?
PDO(PHP 데이터 개체)는 안전한 MySQL 상호 작용을 위해 준비된 명령문을 제공하지만 INSERT INTO
쿼리를 구성하는 것은 어려울 수 있습니다. 일반적인 문제와 해결 방법을 살펴보겠습니다.
다음 코드를 고려하세요.
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
올바른 것처럼 보이는 이 코드는 데이터베이스를 채우지 못하는 경우가 많습니다. 왜요?
핵심은 매개변수 바인딩입니다. 이는 SQL 주입 취약점을 방지하고 코드 유지 관리성을 향상시킵니다. 값을 직접 삽입하는 대신 PDO는 자리 표시자를 사용합니다.
:name
와 같은 자리 표시자를 사용하고 연관 배열의 값을 execute()
에 제공합니다.?
를 자리 표시자로 사용하고 숫자로 인덱스된 배열의 값을 execute()
에 제공합니다.다음은 명명된 매개변수를 사용하여 수정된 코드입니다.
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (:name, :lastname, :age)"); $statement->execute([ 'name' => 'Bob', 'lastname' => 'Desaunois', 'age' => '18', ]);</code>
여기에는 위치 매개변수를 사용한 동일한 내용이 있습니다.
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (?, ?, ?)"); $statement->execute(['Bob', 'Desaunois', '18']);</code>
매개변수 바인딩은 데이터베이스 보안을 강화하고 코드를 더 효율적이고 읽기 쉽게 만듭니다. 이는 강력한 PDO 사용에 필수적입니다. 안전하고 효과적인 PHP 데이터베이스 프로그래밍을 위해서는 이 기술을 익히는 것이 중요합니다.
위 내용은 내 PDO INSERT INTO 준비된 문이 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!