
데이터베이스 테이블에 새로운 행을 추가하려면 SQL의 INSERT 명령을 사용한다. INSERT 명령은 한 번에 하나의 테이블에만 데이터를 추가할 수 있다.
$sql = "INSERT INTO category (name, description, navigation) VALUES (:name, :description, :navigation);"; $category = ['name'] = 'News'; $category = ['description'] = 'News about Creative Folk'; $statement = $pdo->prepare($sql); $statement->execute($category);
이 SQL 문은 category 테이블에 카테고리를 추가한다. 이 구문에는 name, description, navigation 열에 대한 매개변수가 있다.
각 열이 사용할 데이터는 SQL 문의 모든 매개변수에 대해 정확히 하나의 요소를 가진 연관 배열로 제공된다. 이 배열은 오류가 발생할 수 있는 다른 추가 요소를 포함하지 않아야 한다.
PDO 객체의 prepare() 메서드는 PDOStatement 객체를 생성할 수 있도록 인수로 SQL 문이 필요하다. 그런 다음, PDOStatement 객체의 execute() 메서드는 배열의 값을 사용하여 SQL을 실행한다.
데이터베이스 테이블의 기존 행을 업데이트하려면 SQL의 UPDATE 명령을 사용한다. UPDATE 명령은 JOIN을 사용하여 여러 테이블을 업데이트할 수 있다.
$sql = "UPDATE category SET name = :name. description = :description, navigation = :navigation WHERE id = :id;"; $category = ['id'] = 5; $category = ['name'] = 'News'; $category = ['description'] = 'Updates from Creative Folk'; $category = ['navigation'] = 0; pdo($pdo, $sql, $category);
이 SQL 문은 기존의 카테고리를 업데이트한다. 처음 세 개의 매개변수는 name, description, navigation 열에 사용할 값을 갖는다. WHERE 절은 매개변수를 사용하여 업데이트할 행의 아이디를 지정한다.
매개변수를 대체하는 데 사용되는 데이터는 SQL 문의 모든 매개변수에 대해 정확히 하나의 요소를 갖는 배열로 제공된다. 배열에 다른 요소를 갖게 되면 오류가 발생할 수 있다.
구문은 매개변수를 가진 쿼리처럼 실행된다. 사용자가 정의한 pdo() 함수가 SQL 문을 실행하기 위해 사용된다.
SQL의 DELETE 명령은 테이블에서 데이터 행을 삭제한다. 검색 조건은 삭제되어야 할 행으로 제한한다. JOIN을 사용하여 여러 테이블의 데이터를 삭제할 수 있다.
$sql = "DELETE FROM category WHERE id = :id;"; $id = 5; pdo($pdo, $sql, [$id]);
이 SQL 문에서 삭제할 행의 아이디는 $id에 저장된다. 그런 다음, 그 아이디는 인수 안에서 생성된 인덱스 배열을 사용하여 pdo() 함수에 제공된다.
데이터베이스 테이블의 열이 자동 증가하는 아이디를 사용하여 새로운 데이터 행이 테이블에 추가되었다면, PDO 객체의 lastInsertId() 메서드는 데이터베이스가 새로운 행에 대해 생성한 아이디를 반환할 것이다.
pdo($pdo, $sql, $arguments); $new_id = $pdo->lastInsertId();
테이블에 새로운 데이터 행을 추가하는 SQL 문이 실행되면, PDO 객체의 lastInsertId() 메서드는 MySQL 이 id 열에 대해 생성한 값을 가져올 수 있다. 이것은 변수에 저장되어 나중에 코드에서 사용할 수 있다.
출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022