๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐ŸฌMySQL&๐Ÿ˜PHP : ๋Œ๊ณ ๋ž˜์™€ ์ฝ”๋ผ๋ฆฌ์˜ ์†Œํ†ต ์“ฐ๊ธฐ์™€ ์‚ญ์ œ ๋ณธ๋ฌธ

Server/๐ŸฌMySQL&๐Ÿ˜PHP

๐ŸฌMySQL&๐Ÿ˜PHP : ๋Œ๊ณ ๋ž˜์™€ ์ฝ”๋ผ๋ฆฌ์˜ ์†Œํ†ต ์“ฐ๊ธฐ์™€ ์‚ญ์ œ

4:Bee 2023. 10. 12. 00:26
728x90

์•ž์„œ์„œ ์šฐ๋ฆฌ๊ฐ€ ๊ธ€์„ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์œผ๋‹ˆ ์ด์ œ๋Š” ๊ธ€์„ ์ˆ˜์ •ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ ๋ณผ ๊ฒƒ์ด๋‹ค. ์šฐ์„  ๊ธฐ์กด์— aํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ create๋ฅผ ์ƒ์„ฑํ–ˆ๋˜ ๋ฐฉ์‹œ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ php๋ฅผ ์ด์šฉํ•ด์„œ URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ id๊ฐ’์ด ์ง€์ • ๋˜์—ˆ์„ ๋•Œ update๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์•Œ๋ž˜์™€ ๊ฐ™๋‹ค.

๊ธ€ ์ˆ˜์ •ํ•˜๊ธฐ

$update_link

...

$update_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']);
  // <a href="update.php?id="></a>
  $update_link = '<a href="update.php?id=' . $_GET['id'] . '">update</a>';
}
?>

<!DOCTYPE html>
<html lang="eng">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>WEB</title>
</head>

<body>
  <h1><a href="index.php">WEB</a></h1>
  <ol>
    <?= $list ?>
  </ol>

  <a href="create.php">create</a>
  <?= $update_link ?>
  <!-- ์œ„์˜ update_link๋Š” ํ•ด๋‹น if๋ฌธ์˜ t/f์— ๋”ฐ๋ผ์„œ ํ™œ์„ฑํ™”์˜ ์—ฌ๋ถ€๊ฐ€ ๋”ฐ๋ฅธ๋‹ค. ์ฆ‰, URL์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ id๊ฐ’์ด ์ฃผ์–ด์ง€๋ฉด ํ•ด๋‹น update aํƒœ๊ทธ๊ฐ€ ํ™œ์„ฑํ™”๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ดํ›„ update.phpํŒŒ์ผ๋กœ ๋„˜์–ด๊ฐ€์„œ html์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. -->
  <h2><?= $article['title'] ?></h2>
  <?= $article['description'] ?>
</body>

</html>

์œ ์‹ฌํžˆ ๋ณด์•„์•ผํ•  ์ฝ”๋“œ๋Š” if๋ฌธ๊ณผ HTML์˜ <?= $update_link ?>์ด๋‹ค. ์šฐ์„  $update_link์˜ ๋ณ€์ˆ˜๋ฅผ if๋ฌธ ์ƒ๋‹จ์— ์ •์˜ํ•˜์˜€๋‹ค. ๋”ฐ๋ผ if๋ฌธ์˜ ์กฐ๊ฑด์ด TRUE์ผ ๊ฒฝ์šฐ์— $update_link์˜ ๋ณ€์ˆ˜๋Š” aํƒœ๊ทธ update๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์— ํ™œ์„ฑํ™”๋ฅผ ์‹œ์ผœ์ค€๋‹ค. ์ฆ‰, HTML์— ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์ž๋ฆฌํ•˜๊ณ ๋Š” ์žˆ์œผ๋‚˜ if๋ฌธ์ด ํ™œ์„ฑํ™” ๋˜์ง€ ์•Š์•˜๊ธฐ์— ์•„๋ฌด๊ฒƒ๋„ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ๋ฟ์ด๋‹ค.

์ด์ œ ํ•ด๋‹น ํƒœ๊ทธ์— ๋งž๋Š” update.phpํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect(
  'localhost',
  'root',
  '****',
  'phpmysql'
);

$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 = '';
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>';
}

?>

<!DOCTYPE html>
<html lang="eng">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>WEB</title>
</head>

<body>
  <h1><a href="index.php">WEB</a></h1>
  <ol>
    <?= $list ?>
  </ol>
  <form action="process_update.php" method="POST">
    <!-- ์—ฌ๊ธฐ์—๋Š” process_update.php ํŒŒ์ผ์—์„œ update๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. ๋ ๋ผ์„œ ์•„๋ž˜ hidden์˜ inputํƒœ๊ทธ๊ฐ€ ํ™œ์„ฑํ™” ๋œ๋‹ค. -->
    <input type="hidden" name="id" value="<?= $_GET['id'] ?>">
    <!-- ์—ฌ๊ธฐ update.php์™€ create.phpํŒŒ์ผ์„ ๋น„๊ตํ•ด์„œ ๋ณด๋ฉด ๊ฐ inputํƒœ๊ทธ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์„ค์ • ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  $article ๋ณ€์ˆ˜๊ฐ€  -->
    <p><input type="text" name="title" placeholder="title" value="<?= $article['title'] ?>"></p>
    <p><textarea name="description" placeholder="description"><?= $article['description'] ?></textarea></p>
    <p><input type="submit"></p>
  </form>
</body>

</html>

์œ ์˜ ๊นŠ๊ฒŒ ๋ด์•ผํ•  ๋ถ€๋ถ„์€ HTML์ฝ”๋“œ ๋ถ€๋ถ„์—์„œ inputํƒœ๊ทธ์ด๋‹ค. ๊ฐ ํƒœ๊ทธ๋“ค์˜ ์†์„ฑ value๋ฅผ ๋ณด๋ฉด ํ•ด๋‹น URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ id๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๊ฑฐ๋‚˜ $article ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค. ์œ„์—์„œ ๋ดค๋˜ aํƒœ๊ทธ์˜ $update_link๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ if๋ฌธ์˜ ์กฐ๊ฑด์ด TRUE์ผ ๋•Œ ํ•ด๋‹น ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค์ด ๋ณ€๋™๋˜๋ฉฐ ๊ฐ€์ง€๊ณ ์€ ๋ฐ์ดํ„ฐ๋“ค์œผ URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์ด๋‹ค. ์ฆ‰, ์„ ํƒํ•œ id๊ฐ’(๋ชฉ๋ก)๋“ค์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๊ณ  ๊ทธ๊ฒƒ๋“ค์„ ๋ธŒ๋ผ์šฐ์ €์˜ input์ฐฝ์—์„œ ์ƒˆ๋กญ๊ฒŒ ์ˆ˜์ •์„ ํ•˜๊ณ  update๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ดํ›„ ์ˆ˜์ •ํ•œ ๊ฐ’๋“ค์„ updateํ•  ๋•Œ formํƒœ๊ทธ์—์„œ ์ง€์ •๋œ process_update.php๊ฐ€ ํ™œ์„ฑํ™” ๋˜๋Š”๋ฐ ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect(
  'localhost',
  'root',
  '****',
  'phpmysql'
);
//settype์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” $_POST์˜ id๊ฐ’์„ ์ •์ˆ˜๋กœ ๊ณ ์ •ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ด๋‹ค.
settype($_POST['id'], 'integer');
// ์—ฌ๊ธฐ array์˜ ์—ญํ• ์—์„œ id ๋ฐฐ์—ด์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์—ฌ๊ธฐ์„œ filtered์˜ ์—ญํ• ์€?
$filtered = array(
  'id' => mysqli_real_escape_string($conn, $_POST['id']),
  'title' => mysqli_real_escape_string($conn, $_POST['title']),
  'description' => mysqli_real_escape_string($conn, $_POST['description'])
);

$sql = "
  UPDATE topic SET title = '{$filtered['title']}', description = '{$filtered['description']}'
  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>';
}

๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— POST๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ $filtered ๋ฐฐ์—ด ๋ณ€์ˆ˜์—์„œ process_create.php์™€ ๋‹ค๋ฅด๊ฒŒ id๊ฐ’์ด ์ถ”๊ฐ€ ๋˜์—ˆ๊ณ  ํ•ด๋‹น id๊ฐ’์€ ์ •์ˆ˜ํƒ€์ž…์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด ์ ธ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— settypeํ•จ์ˆ˜๋ฅผ ์ด์šฉํ–ˆ๋‹ค. 

settype()

settypeํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜์˜ ์œ ํ˜•์„ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์šฐ๋ฆฌ๋Š” integer๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ integer๋กœ ์„ค์ •ํ•˜์˜€๋‹ค. 

$sql

ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ updateํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” sql๋ฌธ๋ฒ•์ด UPDATE topic SET title..๋กœ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋กœ createํŒŒํŠธ์—์„œ ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š์•˜์Œ ์ดํ›„ sql๋ช…๋ น๋ฌธ์ด ์ ์šฉ๋˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค. process_update.php๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  update๋ฅผ ํ–ˆ์„ ๋•Œ๋Š” process_create.php๋กœ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ์–ด์„œ ์ƒ์„ฑ๋งŒ ์ด๋ฃจ์–ด์งˆ ๋ฟ์ด์˜€๋‹ค. ์•„๋ž˜ TABLE์„ ํ™•์ธ ํ•ด๋ณด์ž.

MariaDB [phpmysql]> SELECT * FROM topic
    -> ;
+----+-------------+--------------------+---------------------+
| id | title       | description        | created             |
+----+-------------+--------------------+---------------------+
|  8 | MySQL       | MySQL is ...       | 2023-10-06 13:54:47 |
|  9 | Oracle      | Oracle is ...      | 2023-10-06 13:55:01 |
| 10 | SQL Servera | SQL Servera is ... | 2023-10-06 13:55:20 |
| 11 | MongoDB     | MongoDB is ...     | 2023-10-06 13:55:32 |
| 12 | MariaDB     | MariaDB is ...     | 2023-10-09 21:28:45 |
| 13 | Welcome     | Hello, web         | 2023-10-10 23:29:02 |
| 14 | Welcome     | Hello, web_test    | 2023-10-11 16:04:12 |
+----+-------------+--------------------+---------------------+
7 rows in set (0.000 sec)

๊ทธ๋ ‡๋‹ค๋ฉด process_update.php ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ํ›„์˜ topic TABLE์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

MariaDB [phpmysql]> SELECT * FROM topic
    -> ;
+----+-------------+--------------------+---------------------+
| id | title       | description        | created             |
+----+-------------+--------------------+---------------------+
|  8 | MySQL       | MySQL is ...       | 2023-10-06 13:54:47 |
|  9 | Oracle      | Oracle is ...      | 2023-10-06 13:55:01 |
| 10 | SQL Servera | SQL Servera is ... | 2023-10-06 13:55:20 |
| 11 | MongoDB     | MongoDB is ...     | 2023-10-06 13:55:32 |
| 12 | MariaDB     | MariaDB is ...     | 2023-10-09 21:28:45 |
| 13 | Welcome     | Hello, web         | 2023-10-10 23:29:02 |
| 14 | myWord      | Hello, Word        | 2023-10-11 16:04:12 |
+----+-------------+--------------------+---------------------+
7 rows in set (0.000 sec)

์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ๋•Œ๋Š” URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— GET์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ๋Š” POST๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.


๊ธ€ ์‚ญ์ œํ•˜๊ธฐ

์ด๋ฒˆ์—๋Š” ๊ธ€์„ ์‚ญ์ œํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ์ฝ”๋“ ๋Š ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect(
  'localhost',
  'root',
  '****',
  'phpmysql'
);

$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']);
  // <a href="update.php?id="></a>
  $update_link = '<a href="update.php?id=' . $_GET['id'] . '">update</a>';
  // delete๋ฐฉ์‹์€ ํ•ด๋‹น URL ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด์•„๋‹ˆ๋‹ค. ์€๋ฐ€ํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ’์„ ์‚ญ์ œํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— GET์ด ์•„๋‹Œ POST๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ fromํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์‚ญ์ œ๋ฅผ ํ•  ๊ฒƒ์ด๋‹ค.
  //๊ทธ๋ ‡๋‹ค๋ฉด ์•„๋ž˜ ์ฝ”๋“œ GET์„ POST๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€?
  // $delete_link = '<a href="process_delete.php?id=' . $_GET['id'] . '">delete</a>';
  //ํ•ด๋‹น formํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์•ˆ์— inputํƒœ๊ทธ๋Š” GET์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ.. ๋ฌด์Šจ ์ฐจ์ด์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
  // ์—ฌ๊ธฐ์„œ hidden์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?
  $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 lang="eng">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <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>

ํ•ด๋‹น ์ฝ”๋“œ์—์„œ delete๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด ๊ธฐ์กด ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ fromํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค formํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ธฐ์กด์— ์šฐ๋ฆฌ๊ฐ€ GET์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์™”์ง€๋งŒ ์‚ญ์ œ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ณด๋‹จ ์ „๋‹ฌ ํ•ด์•ผํ•˜๋Š” POST๋ฐฉ์‹์„ ์ถ”๊ตฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ inputํƒœ๊ทธ์˜ $delete_link = '<a href="process_delete.php?id=' . $_GET['id'] . '">delete</a>';์ด ๋ถ€๋ถ„์˜ GET๋ฐฉ์‹์œผ๋กœ POST๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ id๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์ด๊ธฐ์— POST๋ฅผ ํ•˜๋ฉด ์›น๋ธŒ๋ผ์šฐ์ € ์ƒ ์˜ค๋ฅ˜๊ฐ€ ๊ฒ€์ถœ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” formํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น delete๋ฅผ ์ง„ํ–‰ ํ•  ๋•Œ POST๋กœ ํ˜•์‹์œผ๋กœ submitํ•˜๊ณ  ๋‚ด๋ถ€์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” inputํƒœ๊ทธ GET์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด์ œ process_delete.php๋ฅผ ์‚ดํŽด๋ณด์ž ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect(
  'localhost',
  'root',
  '1024',
  'phpmysql'
);
//settype์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” $_POST์˜ id๊ฐ’์„ ์ •์ˆ˜๋กœ ๊ณ ์ •ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ด๋‹ค.
settype($_POST['id'], 'integer');
// ์—ฌ๊ธฐ array์˜ ์—ญํ• ์—์„œ id ๋ฐฐ์—ด์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์—ฌ๊ธฐ์„œ filtered์˜ ์—ญํ• ์€?
$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>';
}

$sql

UPDATE๋ช…๋ น์–ด์™€๋Š” ๋‹ฌ๋ฆฌ ํŠน์ • ์Šคํ‚ค๋งˆ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. DLETE๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ํŠน์ • ์œ„์น˜์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค๋ฅธ process์— ๋น„ํ•ด์„  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ์œผ๋‹ˆ ์–ด๋ ค์›€์€ ํฌ๊ฒŒ ์—†๋‹ค. ์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น์„ ์‹คํ–‰ ์‹œ์ผฐ์„ ๋•Œ sql์˜ topic TABLE์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

MariaDB [phpmysql]> SELECT * FROM topic;
+----+-------------+--------------------+---------------------+
| id | title       | description        | created             |
+----+-------------+--------------------+---------------------+
|  8 | MySQL       | MySQL is ...       | 2023-10-06 13:54:47 |
|  9 | Oracle      | Oracle is ...      | 2023-10-06 13:55:01 |
| 10 | SQL Servera | SQL Servera is ... | 2023-10-06 13:55:20 |
| 11 | MongoDB     | MongoDB is ...     | 2023-10-06 13:55:32 |
| 12 | MariaDB     | MariaDB is ...     | 2023-10-09 21:28:45 |
| 14 | myWord      | Hello, Word        | 2023-10-11 16:04:12 |
+----+-------------+--------------------+---------------------+
6 rows in set (0.000 sec)
728x90
Comments