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

C-log

๐ŸฌMySQL&๐Ÿ˜PHP : ๋Œ๊ณ ๋ž˜์™€ ์ฝ”๋ผ๋ฆฌ์˜ ๋งˆ์Œ ์ฝ๊ธฐ ๋ณธ๋ฌธ

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

๐ŸฌMySQL&๐Ÿ˜PHP : ๋Œ๊ณ ๋ž˜์™€ ์ฝ”๋ผ๋ฆฌ์˜ ๋งˆ์Œ ์ฝ๊ธฐ

4:Bee 2023. 10. 6. 14:28
728x90

MySQL์„ ํ†ตํ•ด์„œ php๋กœ ๋ฐ์ดํ„ฐ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋ฐฐ์› ๋‹ค. ์ด๋ฒˆ์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ฐฐ์›Œ ๋ณผ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์— ๊ฐ€์žฅ ์ค‘ํ•œ ๋ช…๋ น์–ด๋Š” MySQL์—์„œ๋„ ๋ฐฐ์› ์ง€๋งŒ SELECT์ด๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
mysqli_fetch_array()

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

$sql = "SELECT * FROM topic"; // WHERE id = 8
$result = mysqli_query($conn, $sql);

while ($row = mysqli_fetch_array($result)) {
  echo '<h2>' . $row['title'] . '</h2>';
  echo $row['description'];
}
if ($row === NULL) {
  echo "\n it's NULL!!";
}

์šฐ๋ฆฌ๊ฐ€ ์ €์žฅํ•œ ์Šคํ‚ค๋งˆ๋ฅผ mysqli_fetch_array()๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด๋กœ ๋‚˜์—ด ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠน์ดํ•˜๊ฒŒ ํ•ด๋‹น ๋ช…๋ น๋ฌธ์„ ๊ณ„์†ํ•ด์„œ ์ค„๋ฐ”๊ฟˆํ•ด๊ฐ€๋ฉฐ ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ํ–‰๋“ค์ด ํŠน์ • ๋ฐฐ์—ด๋ฌธ์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋‚˜์—ด์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค์ด ๋„์ถœ ๋˜๊ณ  ๋งˆ์ง€๋ง‰์—๋Š” NULL์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ while๋ฌธ์ด๋ผ๋Š” ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ $result๊ฐ€ NULL์„ ๋ฐ˜ํ™”ํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ์ฆ‰, true์ผ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋Œ๋ฉฐ ๋งˆ์ง€๋ง‰ if๋ฌธ์„ ํ†ตํ•ด NULL์„ ๋ฐ˜ํ™˜ํ•  ์‹œ ๋” ์ด์ƒ ๋ฐฐ์—ด์„ ๋‚˜์—ดํ•˜์ง€ ์บ๊ณ  ๋ฉˆ์ถ”๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹น ๋ฌธ๊ตฌ๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ํŠน์ • ๊ฐ’์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” WHERE id = 'n'์„ ํ†ตํ•ด์„œ ํ•ด๋‹น ๊ฐ’์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.(ํ•ด๋‹น ๋ฐฐ์—ด์˜ ์Šคํ‚ค๋งˆ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MySQL Monitor๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.)


์ด๋ ‡๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ olํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  php๋งŒ์œผ๋กœ ํ•„์š”ํ•œ ๊ฐ’๊ณผ ์ •๋ณด๋“ค์„ ๋‚˜์—ดํ–ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌ์„ฑํ•œ ํ‹€์— ๋งž๊ฒŒ ํ•ด๋‹น select.php๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ ๊ตฌ์„ฑํ•ด๋ณด๋ฉฐ ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋ณด์ž.

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์Šคํ‚ค๋งˆ๋ฅผ aํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ title๋กœ ๋จผ์ € ๋ชฉ๋กํ™” ํ•˜๊ณ  ์ด๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ description์ด ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

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

$sql = "SELECT * FROM topic";
$result = mysqli_query($conn, $sql);
//$list ๋ณ€์ˆ˜๋Š” bodyํƒœ๊ทธ์˜ olํƒœ๊ทธ ๋ชฉ๋ก์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“  ๋ณ€์ˆ˜์ด๋‹ค. 
//ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ while๋ฌธ์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค. 
//์•ž์„œ ์šฐ๋ฆฌ๊ฐ€ while๋ฌธ์˜ ์กฐ๊ฑด๋ฌธ์—์„œ ์‚ฌ์šฉ๋œ ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์ด๋‹ค. 
//๋‹ค๋งŒ $list๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ถ€๋ถ„์„ ์œ ์˜๊นŠ๊ฒŒ ํ™•์ธํ•ด๋ณด๊ณ  ๋‹ค์‹œ ๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
$list = "";

while ($row = mysqli_fetch_array($result)) {
  $list = $list . "<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>";
}

$article = array(
  'title' => 'Welcome',
  'description' => 'Hello, web'
);
#๋งŒ์•ฝ id๊ฐ€ ์ฃผ์†Œ์— isset์ด ๋˜์—ˆ๋‹ค๋ฉด $sql ๋ณ€์ˆ˜ ๊ฐ’์ด ํ•ด๋‹น ์ฃผ์†Œ์˜ ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
if (isset($_GET['id'])) {
  //$_GET['id']์˜ id๋Š” URL์—์„œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด๋‹ค. ์ฆ‰, URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด id๊ฐ€ ํ•ด๋‹น ํ•˜๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์•„๋ž˜ ์กฐ๊ฑด๋“ค์ด ๋ฐœ์ƒํ•œ๋‹ค.
  $sql = "SELECT * FROM topic WHERE id={$_GET['id']}";
  $result = mysqli_query($conn, $sql); //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ CRUD๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  $row = mysqli_fetch_array($result); //์ด ์ดํ•จ์ˆ˜๋Š” ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—์„œ ๋‹ค์Œ ํ–‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  $article['title'] = $row['title']; //ํ•ด๋‹น if๋ฌธ์ด ๋ฐœ๋™ํ•˜์ง€ ์•Š์œผ๋ฉด $article๋ณ€์ˆ˜๊ฐ€ ์œ ์ง€๋œ๋‹ค.
  $article['description'] = $row['description'];
}
?>

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

<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>
  <h2><?= $article['title'] ?></h2>
  <?= $article['description'] ?>
</body>

</html>

์šฐ๋ฆฌ๊ฐ€ select.phpํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋˜ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋‹ค๋งŒ Undefied index id in /..์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ์„ ํ•ด์•ผํ•œ๋‹ค. ์ด๋Š” id ๊ฐ’์ด ์—†์œผ๋ฉด ๋ฐœ์ƒํ•œ๋‹ค. ์™œ id ๊ฐ’์ด ์—†๋‹ค๊ณ  ํ•˜๋Š”์ง€ ์•Œ์•„๋ด์•ผํ•œ๋‹ค.

์ „์—ญ๋ณ€์ˆ˜ $result์™€ ์ง€์—ญ๋ณ€์ˆ˜ $result

์ „์—ญ๋ณ€์ˆ˜์— ์žˆ๋Š” $result์™€ if๋ฌธ ์•ˆ์— ์žˆ๋Š” ์ง€์—ญ๋ณ€์ˆ˜ $result์˜ ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•ด๋ณด์ž. ์ „์—ญ๋ณ€์ˆ˜ $result๋Š” ๋ชจ๋“  ์ฃผ์ œ์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜์ด๊ณ  ์ง€์—ญ๋ณ€์ˆ˜์ธ $result๋Š” ์„ ํƒํ•œ ์ฃผ์ œ์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ณ€์ˆ˜์ด๋‹ค. ์ด ๋‘˜์˜ ๊ฐ€์žฅ ํฐ์ฐจ์ด๋Š” WHERE๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์•ˆํ–ˆ๋Š”์ง€์˜ ์ฐจ์ด์ด๋‹ค.

isset()

issetํ•จ์ˆ˜์˜ ์—ญํ• ์€ ํ•ด๋‹น ํŒŒ๋ผ๋ฉ”ํ„ฐ๊ฐ€ ์ •์˜ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋”ฐ๋ผ์„œ  if๋ฌธ์„ ํ†ตํ•ด์„œ True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ํ•ด๋‹น ์กฐ๊ฑด๋ฌธ๋“ค์ด ํ™œ์„ฑํ™”๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

์™œ ์–ด๋–ป๊ฒŒ GET์ด ๋˜๋Š”๊ฐ€

$_GET['id']์˜ id๋Š” URL์—์„œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด๋‹ค. ์ฆ‰, URL์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด id๊ฐ€ ํ•ด๋‹น ํ•˜๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  if์˜ ์•„๋ž˜ ์กฐ๊ฑด๋“ค์ด ๋ฐœ์ƒํ•œ๋‹ค. aํƒœ๊ทธ๋Š” method์†์„ฑ์ด ์žˆ์ง€ ์•Š๋‹ค. method๋Š” fromํƒœ๊ทธ ์†์„ฑ์— ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ GET๊ณผ aํƒœ๊ทธ๋Š” ์ „ํ˜€ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.

GET๊ณผ POST์˜ ์ฐจ์ด

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” GET์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋Š” POST๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๊ด€ํ–‰์ด๋‹ค. ๋˜ํ•œ ๋ณด์•ˆ๊ณผ ๋ฐ์ดํ„ฐ ์–‘์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์ ˆํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

728x90
Comments