PDO에서 INSERT INTO에 대한 준비된 문 오류
PDO의 복잡성을 탐색하는 동안 MySQL 쿼리에 준비된 문을 사용하는 데 어려움을 겪을 수 있습니다. 다음 코드를 고려해보세요.
$dbhost = "localhost"; $dbname = "pdo"; $dbusername = "root"; $dbpassword = "845625"; $link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword"); $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();
이 접근 방식을 따랐음에도 불구하고 데이터베이스는 비어 있습니다.
해결책은 준비된 문을 적절하게 사용하는 데 있습니다. 대신 다음을 활용하세요.
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);
준비된 명령문은 입력 삭제를 제공합니다. SQL 문에 ':parameter' 자리 표시자를 사용하고 'execute' 함수에 이러한 매개변수의 연관 배열을 전달합니다. 또는 '?'를 사용하십시오. 자리 표시자를 사용하고 값 배열을 전달합니다.
두 방법 모두 장단점이 있습니다. 매개변수 이름을 바인딩하면 가독성이 향상되고 후자의 방법은 코드를 단순화합니다.
위 내용은 내 PDO 준비 문이 MySQL에 INSERT에 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!