개발 꿀팁/PHP
php 작업MySQL(pdo)
Jammie
2022. 9. 22. 14:50
반응형
pdo 확장은 php에 다양한 데이터베이스를 지원할 수 있는 경량 일관된 인터페이스를 제공하며, 다음은 pdo 확장을 사용하여 mysql을 조작하여 데이터의 첨삭 및 수정을 실현합니다
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = '123456';
//링크 데이터베이스
try {
$params = [
PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8", //인코딩 설정
PDO::ATTR_EMULATE_PREPARES => false, //전처리 사용
];
$db = new PDO($dsn, $user, $password, $params);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
//여러 개의 데이터를 조회하다
$sth = $db->prepare('SELECT id, title FROM article WHERE id =?');
$sth->execute([1]);
$res1 = $sth->fetchAll(PDO::FETCH_ASSOC); //반환되는 값을 설정할 수 있는 여러 가지 방법이 있습니다
print_r($res1);
//한 줄의 데이터를 조회하다
$sth = $db->prepare('SELECT id, title FROM article WHERE id =?');
$sth->execute([1]);
$res2 = $sth->fetch(PDO::FETCH_ASSOC);
print_r($res2);
$sth = null; //결과 집합 풀기
//일렬을 취하다
$sth = $db->prepare('SELECT title FROM article WHERE 1');
$sth->execute();
$res3 = $sth->fetchAll(PDO::FETCH_COLUMN);
print_r($res3);
$sth = null; //결과 집합 풀기
//추가
$sth = $db->prepare("INSERT INTO `article`(`title`,`content`,`created_at`)VALUES(?,?,?)");
$sth->execute(['제목', '내용', time()]);
echo "영향을 받는 행 수:", $sth->rowCount(), "<br/>";
echo "자동증가ID:", $db->lastInsertId(), "<br/>";
//고치다
$sth = $db->prepare("UPDATE `article` SET `title`=? WHERE `id`=?");
$sth->execute(['제목 12', 2]);
echo "영향을 받는 행 수:", $sth->rowCount(), "<br/>";
//삭제하다
$sth = $db->prepare("DELETE FROM `article` WHERE `id`=?");
$sth->execute([3]);
echo "영향을 받는 행 수:", $sth->rowCount(), "<br/>";
//사무
try {
$db->beginTransaction();
$sth = $db->prepare("UPDATE `article` SET `title`=? WHERE `id`=?");
$sth->execute(['사무1', 1]);
echo "영향을 받는 행 수:", $sth->rowCount(), "<br/>";
$sth = $db->prepare("UPDATE `article` SET `title`=? WHERE `id`=?");
$sth->execute(['사무1', 2]);
echo "영향을 받는 행 수:", $sth->rowCount(), "<br/>";
//때때로, 당신은 수동으로 이상을 던져 롤백 작업을 해야 할 수도 있습니다
// throw new Exception("오류 메시지", 1);
$db->commit();
echo "성공하다";
} catch (Exception $e) {
$db->rollBack();
echo $e->getMessage();
}
$db = null; //데이터베이스 연결 닫기
표 작성 문구:
CREATE TABLE `article` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`content` text COLLATE utf8mb4_unicode_ci,
`created_at` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='문장표';
INSERT INTO `test`.`article` (`id`, `title`, `content`, `created_at`) VALUES ('1', '제목 12', '테스트 내용', '234');
INSERT INTO `test`.`article` (`id`, `title`, `content`, `created_at`) VALUES ('2', '제목 12', '테스트 내용2', '2323');
반응형