Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트 객체
- 자바스크립트 node
- php
- oracle db
- 자바스크립트 기본 문법
- javascript
- 보안뉴스
- oracle
- 카카오프로젝트 100
- 보안뉴스요약
- ES6
- Oracle SQL
- 자바스크립트 element api
- 보안뉴스 요약
- 랜섬웨어
- 다크웹
- 보안뉴스한줄요약
- 자바스크립트 API
- 오라클
- 자바스크립트 jQuery
- python
- 자바스크립트
- 카카오프로젝트100
- 자바스크립트 prototype
- 파이썬
- 보안뉴스 한줄요약
- numpy
- 카카오프로젝트
- GIT
- 깃허브
Archives
- Today
- Total
FU11M00N
[ PHP, MYSQL ] php & mysql delete문 본문
생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅입니다.
- 현재 테이블의 값
현재 컬럼이 3개 존재합니다.
이 값을 php파일로 삭제해보겠습니다.
- 기능 소개
현재 index.php 파일은 topic의 테이블에있는 컬럼의 "title" 들을 뽑아와 리스트로 출력합니다.
기본적으로 index.php에는 "delete"를 할수있는 링크가 없지만,
isset함수를 이용하여 id에 값이있다면 "title" 과 "description"의 값들과 "delete" 링크도 생겨납니다.
create나 update의 경우 하이퍼링크를 통해 기능을 구현하도록했었습니다.
하지만 delete의 경우 하이퍼링크로 기능을 구현하게되면,
그 링크를 내가 아닌 누군가가 눌렀을때 삭제가 되는 위험이있습니다.
그러하여 delete는 form 태그를 활용하여 기능을 구현하겠습니다.
"fu11m00n" 링크를 클릭시 "delete" 를 할수있는 링크가 생겨납니다.
"delete" 버튼을 클릭시 아까 클릭했던 "fu11m00n" 의 값이 데이터베이스에서 삭제됩니다.
- index.php
<?php
$conn = mysqli_connect(
'localhost',
'ID',
'PASSWORD',
'DB이름');
$sql = "SELECT * FROM topic";
$result = mysqli_query($conn, $sql);
$list = '';
while($row = mysqli_fetch_array($result)) {
$escaped_title = htmlspecialchars($row['title']);
$list = $list."<li><a href=\"index.php?id={$row['id']}\">{$escaped_title}</a></li>";
}
$article = array(
'title'=>'Welcome',
'description'=>'Hello, web'
);
$update_link = '';
$delete_link = '';
if(isset($_GET['id'])) {
$filtered_id = mysqli_real_escape_string($conn, $_GET['id']);
$sql = "SELECT * FROM topic WHERE id={$filtered_id}";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$article['title'] = htmlspecialchars($row['title']);
$article['description'] = htmlspecialchars($row['description']);
$update_link = '<a href="update.php?id='.$_GET['id'].'">update</a>';
$delete_link = '
<form action="process_delete.php" method="post">
<input type="hidden" name="id" value="'.$_GET['id'].'">
<input type="submit" value="delete">
</form>
';
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>WEB</title>
</head>
<body>
<h1><a href="index.php">WEB</a></h1>
<ol>
<?=$list?>
</ol>
<a href="create.php">create</a>
<?=$update_link?>
<?=$delete_link?>
<h2><?=$article['title']?></h2>
<?=$article['description']?>
</body>
</html>
- process_delete.php
<?php
$conn = mysqli_connect(
'localhost',
'ID',
'PASSWORD',
'DB이름');
settype($_POST['id'], 'integer');
$filtered = array(
'id'=>mysqli_real_escape_string($conn, $_POST['id'])
);
$sql = "
DELETE
FROM topic
WHERE id = {$filtered['id']}
";
$result = mysqli_query($conn, $sql);
if($result === false){
echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
error_log(mysqli_error($conn));
} else {
echo '삭제에 성공했습니다. <a href="index.php">돌아가기</a>';
}
?>
SUA 정보보안 멘토링에 참여하고 있습니다.
'SUA 정보보안 > php&mysql' 카테고리의 다른 글
[ mysql ] mysql 관계형 데이터베이스. join문 (0) | 2021.02.14 |
---|---|
[ PHP, MYSQL ] php & mysql update문 (0) | 2021.02.14 |
[ PHP, MYSQL ] php & mysql select문 2 (0) | 2021.02.14 |
[ PHP, MYSQL ] php & mysql select문 1 (0) | 2021.02.14 |
[ PHP, MYSQL ] php & mysql insert문 (0) | 2021.02.14 |
Comments