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

C-log

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

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

๐ŸฌMySQL&๐Ÿ˜PHP : ๋Œ๊ณ ๋ž˜์™€ ์ฝ”๋ผ๋ฆฌ์˜ ์ฒซ ๋งŒ๋‚จ

4:Bee 2023. 10. 5. 18:06
728x90

php์™€ MySQL์˜ ์ฒซ ๋งŒ๋‚จ์„ ์„ฑ์‚ฌํ•˜๋Š” ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์ด ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๋ฅผ ๊พธ๋ฉฐ ์ค„ ๊ฒƒ์ด๋‹ค. ๋จผ์ € ์›นํŽ˜์ด์ง€์˜ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณด์ž. ์ด์ „์—๋„ ๊ตฌ์„ฑ ํ–ˆ๋˜ ๋ชจ์Šต์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ค์›€์€ ์—†์„ ๊ฒƒ์ด๋‹ค.

<!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>WEB</h1>
  <ol>
    <li>HTML</li>
  </ol>
  <h2>Welcome</h2>
  Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusamus, voluptatum.
</body>

</html>

์ด๋ ‡๊ฒŒ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด MySQL์„ ์ค€๋น„ํ•œ๋‹ค. (๊ธ€์“ด์ด๋Š” xampp์„ ์‚ฌ์šฉํ•œ๋‹ค.) ์ดํ›„ ์ƒˆ๋กœ์šด DATABASE๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

MariaDB [mysql]> CREATE DATABASE phpmysql
    -> ;
Query OK, 1 row affected (0.001 sec)

MariaDB [mysql]> SHOW DATABASES
    -> ;
+--------------------+
| Database           |
+--------------------+
| grade_card         |
| information_schema |
| mysql              |
| opentutorials      |
| performance_schema |
| phpmyadmin         |
| phpmysql           |
| test               |
+--------------------+
8 rows in set (0.001 sec)

MariaDB [mysql]> use phpmysql
Database changed

์ดํ›„ topic TBALE์„ ๋งŒ๋“ค์–ด์ค€๋‹ค. ์ƒ์„ฑ ํ›„์— ์–ด๋–ค topic์ด ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.  ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

MariaDB [phpmysql]> CREATE TABLE topic(
    -> id int(11) NOT NULL AUTO_INCREMENT,
    -> title varchar(45) NOT NULL,
    -> description text,
    -> created datetime NOT NULL,
    -> PRIMARY KEY(id)
    -> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.011 sec)

MariaDB [phpmysql]> SHOW TABLES;
+--------------------+
| Tables_in_phpmysql |
+--------------------+
| topic              |
+--------------------+
1 row in set (0.001 sec)

MariaDB [phpmysql]> DESC topic;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| title       | varchar(45) | NO   |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
| created     | datetime    | NO   |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
4 rows in set (0.024 sec)

์—ฌ๊ธฐ์„œ InnoDB๋Š” MySQL์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์—”์ง„์ด๋ฉฐ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ง€๊ธˆ์€ ์ด์ •๋„๋กœ๋งŒ ์•Œ๊ณ  ์ดํ›„์— ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌ์ŠคํŒ…ํ•  ๋•Œ ๋” ์ž์„ธํžˆ ๋ณด์ž.


์ด๋ ‡๊ฒŒ ๊ฐ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด php์™€ MySQL์„ ์—ฐ๋™ํ•˜๋Š” ์ž‘์—…์„ ์‹œ์ž‘ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.
์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ์•Œ์•„๋‘ฌ์•ผ ํ•  ๊ฒƒ์€ php๋Š” MySQL Server์ž…์žฅ์—์„  ํด๋ผ์ด์–ธํŠธ์ด๋‹ค. ์ฆ‰ php๋Š” ์š”์ฒญ์„ ํ•˜๋Š” ์ž…์žฅ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ๊ด€์ ์œผ๋กœ ์•„๋ž˜ ์ž‘์—…์„ ๋”ฐ๋ผํ•ด๋ณธ๋‹ค๋ฉด ์กฐ๊ธˆ ์ดํ•ด๊ฐ€ ๋” ์ž˜ ๋  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” php API๋ฅผ ์‚ฌ์šฉํ•ด์„œ MySQL์— ์ ‘๊ทผ ํ•  ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” PDO_MySQL๊ณผ mysqli๋ผ๋Š” API๋ฅผ ์•Œ์•„์•ผํ•œ๋‹ค. ์ด๋‘˜์˜ ์ฐจ์ด๋Š” ๋” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด PDO๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” MySQL๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— mysqli API๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ๊ฒ€์ƒ‰ ์ฐฝ์— "php mysqli api"๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ php ๊ณต์‹์‚ฌ์ดํŠธ์˜ ๊ธ€์„ ์‚ดํŽด๋ณด๋ฉด ํ•จ์ˆ˜ ๋ฐฉ์‹(procedural)๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. 
mysqli_connect()
์šฐ์„  insert.php ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด๋ณด์ž.

<?php
// mysql์— ์ ‘์†ํ•˜๊ฒ ๋‹ค๋Š” ํ•จ์ˆ˜์ด๋‹ค.
mysqli_connect("localhost", "root", "******", "phpmysql");

ํ•จ์ˆ˜ ์ˆœ์„œ๋Œ€๋กœ hostname๊ณผ userName, password, DATABASE์ด๋ฆ„์„ ์ ์œผ๋ฉด๋œ๋‹ค.(๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์œ ์ถœ์ด ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค.)
mysqli_query()
์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์‚ฝ์ž…์„ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ด์–ด์„œ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์ž…ํ•  ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

mysqli_query($conn, "
INSERT INTO topic 
  (title, description, created)
    VALUE(
      'MySQL',
      'MySQL is ..',
      NOW()
    )
");

php๊ณต์‹ ์‚ฌ์ดํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด mysqli_query์˜ ์ฒซ ๋ฒˆ์žฌ ์ธ์ž๋กœ๋Š” mysqli์˜ $mysql์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ $conn์„ ์˜๋ฏธํ•˜๊ณ  ์ดํ›„ $query๋Š” ์ƒ์„ฑํ•  ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์˜ํ•œ๋‹ค. ๋”ฐ๋ผ MySQL ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ดํ›„ ์ธ์ž๋Š” ์ง€๊ธˆ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š” ์—†๊ธฐ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฝ์ž…ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ MySQL๋กœ ํ™•์ธํ•ด๋ณด์ž.

MariaDB [phpmysql]> SELECT * FROM topic;
+----+-------+-------------+---------------------+
| id | title | description | created             |
+----+-------+-------------+---------------------+
|  1 | MySQL | MySQL is .. | 2023-10-05 22:29:58 |
+----+-------+-------------+---------------------+
1 row in set (0.001 sec)

์ด๋ ‡๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ์‚ฝ์ž…์ด ๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„ˆ๋ฌด ์‹ ๋‚˜์ง€ ์•Š๋Š”๊ฐ€? ์šฐ๋ฆฌ๋Š” php๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋˜์–ด MySQL Server์— connect ์š”์ฒญ์„ ํ–ˆ๊ณ  ํ•ด๋‹น VALUE๋ฅผ ์ƒ์„ฑํ•ด์„œ MySQL monitor๋กœ ๊ฐ’์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ง์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ์•ฝ ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋ฌดํ•œํ•˜๊ฒŒ mysqli_queryํ•จ์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•œ๋งŒํผ ๋Š˜์–ด๋‚œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•ด ๋‘์ž.


์ฐธ๊ณ ๋กœ ๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ์ˆ˜์—…์—์„œ๋Š” php๊ฐ€ MySQL์— ์ ‘์†ํ•œ log๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ๊ฒ€์ƒ‰์ฐฝ์— "mysql general_log enalbe"์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‚˜์˜จ๋‹ค. ๊ฐœ์ธ์ด  ํ•„์š”ํ•˜๋‹ค๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ์ž‘์—…ํ•ด์„œ log๋ฅผ ํ™•์ธํ•˜๋ฉด ์ข‹์„ ๊ฒƒ๊ฐ™๋‹ค.
 
์ด๋ ‡๊ฒŒ ๋Œ๊ณ ๋ž˜์™€ ์ฝ”๋ผ๋ฆฌ์˜ ์ฒซ๋งŒ๋‚จ์„ ์•„์ฃผ ์ž˜ ์„ฑ์‚ฌํ–ˆ๋‹ค. ์ดํ›„ ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฐ ๋งŒ๋‚จ์„ ์ฃผ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ๋“ค์„ ํ™•์ธ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋”์šฑ create๋‹ค์šด create๋ฅผ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.


php htdocs ์œ„์น˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ์‹œ

xampp์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด htdocs ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด htdocs2 ๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ   xampp ํ”„๋กœ๊ทธ๋žจ์—์„œ config๋ฅผ ํ†ตํ•ด์„œ ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

DocumentRoot "C:\xampp\htdocs2"
<Directory "C:\xampp\htdocs2">

์ด์ฒ˜๋Ÿผ ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. ์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ๋Š” ์•„๋ž˜ ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
Comments