๋ฃจ์  ์†Œํ”„ํŠธ ๋กœ๊ณ 

216.73.216.248 TODAY : 62

PHP ๊ฐ•์˜

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 3์ฃผ์ฐจ: ๊ฒŒ์‹œํŒ CRUD ๊ตฌํ˜„ (๊ธฐ๋ณธ) - 01 ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ” ์„ค๊ณ„

๐Ÿ“š PHP ์ค‘๊ธ‰ - 3์ฃผ์ฐจ: ๊ฒŒ์‹œํŒ CRUD ๊ตฌํ˜„ (๊ธฐ๋ณธ) - 01 ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ” ์„ค๊ณ„
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-07-20 18:34:31
์กฐํšŒ์ˆ˜ 7
- ์„ค๋ช…

๐Ÿ“š PHP ์ค‘๊ธ‰ - 3์ฃผ์ฐจ: ๊ฒŒ์‹œํŒ CRUD ๊ตฌํ˜„ (๊ธฐ๋ณธ) - 01 ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ” ์„ค๊ณ„





์•ˆ๋…•ํ•˜์„ธ์š”! #PHP ์ค‘๊ธ‰ ๊ณผ์ • 3์ฃผ์ฐจ, #๊ฒŒ์‹œํŒ #CRUD ๊ตฌํ˜„์˜ ์ฒซ ๋ฒˆ์งธ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” #ํšŒ์›๊ฐ€์ž… ๋ฐ #๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด #์‚ฌ์šฉ์ž #์ธ์ฆ๊ณผ #์„ธ์…˜ #๊ด€๋ฆฌ์˜ ๊ธฐ์ดˆ๋ฅผ ๋‹ค์กŒ์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” #์‚ฌ์šฉ์ž๋“ค์ด ์ž์œ ๋กญ๊ฒŒ #๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•˜๊ณ  ์กฐํšŒํ•˜๋ฉฐ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” #๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.



์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” #๊ฒŒ์‹œํŒ #๊ตฌํ˜„์˜ ์ฒซ๊ฑธ์Œ์ด์ž ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‹จ๊ณ„์ธ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค #ํ…Œ์ด๋ธ” #์„ค๊ณ„์— ๋Œ€ํ•ด ์ƒ์„ธํžˆ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. #ํšจ์œจ์ ์ด๊ณ  #์•ˆ์ •์ ์ธ #๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ #ํ…Œ์ด๋ธ” #๊ตฌ์กฐ์™€ ๊ฐ #์ปฌ๋Ÿผ์˜ ์—ญํ• , ๊ทธ๋ฆฌ๊ณ  #๋ฐ์ดํ„ฐ #ํƒ€์ž… ์„ ์ • ๊ธฐ์ค€๊นŒ์ง€, #์‹ค์ œ #์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”.







1. ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ ๋ถ„์„ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜


uploadImage


#๊ฒŒ์‹œํŒ #ํ…Œ์ด๋ธ”์„ #์„ค๊ณ„ํ•˜๊ธฐ ์ „์—, ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค #๊ฒŒ์‹œํŒ์ด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์•ผ ํ• ์ง€ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ #๊ฒŒ์‹œํŒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.



  • #๊ฒŒ์‹œ๋ฌผ #์ž‘์„ฑ (Create): #์‚ฌ์šฉ์ž๊ฐ€ #์ œ๋ชฉ, #๋‚ด์šฉ, #์ž‘์„ฑ์ž ๋“ฑ์„ ์ž…๋ ฅํ•˜์—ฌ ์ƒˆ๋กœ์šด #๊ฒŒ์‹œ๋ฌผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • #๊ฒŒ์‹œ๋ฌผ #์กฐํšŒ (Read): #์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑ๋œ #๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ , ํŠน์ • #๊ฒŒ์‹œ๋ฌผ์˜ #์ƒ์„ธ #๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • #๊ฒŒ์‹œ๋ฌผ #์ˆ˜์ • (Update): #์ž‘์„ฑ์ž ๋ณธ์ธ๋งŒ ์ž์‹ ์˜ #๊ฒŒ์‹œ๋ฌผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • #๊ฒŒ์‹œ๋ฌผ #์‚ญ์ œ (Delete): #์ž‘์„ฑ์ž ๋ณธ์ธ ๋˜๋Š” #๊ด€๋ฆฌ์ž๋งŒ #๊ฒŒ์‹œ๋ฌผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • #๋Œ“๊ธ€ (์„ ํƒ ์‚ฌํ•ญ): #๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ #๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ด๋ฒˆ ๊ธฐ๋ณธ ๊ณผ์ •์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

  • #ํŒŒ์ผ #์ฒจ๋ถ€ (์„ ํƒ ์‚ฌํ•ญ): #๊ฒŒ์‹œ๋ฌผ์— #ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ด๋Ÿฌํ•œ #์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ”ํƒ•์œผ๋กœ #๊ฒŒ์‹œ๋ฌผ์„ ์ €์žฅํ•  #ํ…Œ์ด๋ธ”์˜ #๊ตฌ์กฐ๋ฅผ ๊ตฌ์ƒํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.







2. ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ” ์„ค๊ณ„ (posts ํ…Œ์ด๋ธ”)

uploadImage



#๊ฒŒ์‹œํŒ #๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  #ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์€ posts (๊ฒŒ์‹œ๋ฌผ๋“ค)๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด #ํ…Œ์ด๋ธ”์—๋Š” ๊ฐ #๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ ๊ณ ์œ ํ•œ ์ •๋ณด๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.



SQL

CREATE TABLE posts (
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT(11) NOT NULL,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    views INT(11) DEFAULT 0,
    -- FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
    -- ์œ„ ์ฃผ์„์€ user_id๊ฐ€ users ํ…Œ์ด๋ธ”์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    -- ์‹ค์ œ ์‚ฌ์šฉ ์‹œ, users ํ…Œ์ด๋ธ”์ด ๋จผ์ € ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
);




๊ฐ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์„ค๋ช…


  • id (INT, NOT NULL, AUTO_INCREMENT, PRIMARY KEY)

    • #๊ฒŒ์‹œ๋ฌผ๋งˆ๋‹ค ๋ถ€์—ฌ๋˜๋Š” ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.

    • INT: ์ •์ˆ˜ํ˜•์œผ๋กœ, #๊ฒŒ์‹œ๋ฌผ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • NOT NULL: ๋น„์–ด ์žˆ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    • AUTO_INCREMENT: ์ƒˆ๋กœ์šด #๊ฒŒ์‹œ๋ฌผ์ด ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ 1์”ฉ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    • PRIMARY KEY: #ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ๊ฐ #๊ฒŒ์‹œ๋ฌผ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ๋ณธ ํ‚ค์ž…๋‹ˆ๋‹ค.

  • user_id (INT, NOT NULL)

    • ์ด #๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•œ #์‚ฌ์šฉ์ž์˜ ๊ณ ์œ  #ID๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • users #ํ…Œ์ด๋ธ”์˜ id #์ปฌ๋Ÿผ๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” #์™ธ๋ž˜ ํ‚ค(Foreign Key) ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์–ด๋–ค #์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค #๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • NOT NULL: #๊ฒŒ์‹œ๋ฌผ์€ ๋ฐ˜๋“œ์‹œ #์ž‘์„ฑ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • title (VARCHAR(255), NOT NULL)

    • #๊ฒŒ์‹œ๋ฌผ์˜ #์ œ๋ชฉ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • VARCHAR(255): ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด๋กœ ์ตœ๋Œ€ 255์ž๊นŒ์ง€ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #์ œ๋ชฉ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์งง์œผ๋ฏ€๋กœ ์ถฉ๋ถ„ํ•œ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.

    • NOT NULL: #์ œ๋ชฉ์€ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • content (TEXT, NOT NULL)

    • #๊ฒŒ์‹œ๋ฌผ์˜ #๋ณธ๋ฌธ #๋‚ด์šฉ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • TEXT: ๊ธด ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” #๋ฐ์ดํ„ฐ #ํƒ€์ž…์ž…๋‹ˆ๋‹ค. VARCHAR๋ณด๋‹ค ํ›จ์”ฌ ๊ธด ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • NOT NULL: #๋‚ด์šฉ์€ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • created_at (DATETIME, DEFAULT CURRENT_TIMESTAMP)

    • #๊ฒŒ์‹œ๋ฌผ์ด #์ž‘์„ฑ๋œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • DATETIME: ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ YYYY-MM-DD HH:MM:SS ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • DEFAULT CURRENT_TIMESTAMP: #๊ฒŒ์‹œ๋ฌผ์ด ์‚ฝ์ž…๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

  • updated_at (DATETIME, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

    • #๊ฒŒ์‹œ๋ฌผ์ด #๋งˆ์ง€๋ง‰์œผ๋กœ #์ˆ˜์ •๋œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • DATETIME: ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP: #๊ฒŒ์‹œ๋ฌผ์ด ์‚ฝ์…˜๋  ๋•Œ๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์ด ์ €์žฅ๋˜๊ณ , ์ดํ›„ #๊ฒŒ์‹œ๋ฌผ์ด #์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค.

  • views (INT, DEFAULT 0)

    • #๊ฒŒ์‹œ๋ฌผ์˜ #์กฐํšŒ์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • INT: ์ •์ˆ˜ํ˜•์œผ๋กœ, #์กฐํšŒ์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    • DEFAULT 0: ์ƒˆ๋กœ์šด #๊ฒŒ์‹œ๋ฌผ์ด ์ž‘์„ฑ๋˜๋ฉด #์กฐํšŒ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.







3. users ํ…Œ์ด๋ธ”๊ณผ์˜ ๊ด€๊ณ„ (์™ธ๋ž˜ํ‚ค ์„ค์ •)

uploadImage



์šฐ๋ฆฌ๊ฐ€ ์ง€๋‚œ์ฃผ์— ๊ตฌํ˜„ํ–ˆ๋˜ #ํšŒ์›๊ฐ€์ž… ์‹œ์Šคํ…œ์˜ users #ํ…Œ์ด๋ธ”๊ณผ posts #ํ…Œ์ด๋ธ”์€ user_id #์ปฌ๋Ÿผ์„ ํ†ตํ•ด ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” #๊ด€๊ณ„ํ˜• #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.



user_id #์ปฌ๋Ÿผ์„ users #ํ…Œ์ด๋ธ”์˜ id #์ปฌ๋Ÿผ๊ณผ #์™ธ๋ž˜ ํ‚ค๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • #๋ฐ์ดํ„ฐ #๋ฌด๊ฒฐ์„ฑ ์œ ์ง€: posts #ํ…Œ์ด๋ธ”์˜ user_id๋Š” ๋ฐ˜๋“œ์‹œ users #ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” id์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ)

  • #๋ฐ์ดํ„ฐ #์—ฐ๊ฒฐ์„ฑ: ํŠน์ • #์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋“  #๊ฒŒ์‹œ๋ฌผ์„ ์‰ฝ๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ: SELECT * FROM posts WHERE user_id = [์‚ฌ์šฉ์ž_ID];)



posts #ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ FOREIGN KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. (users #ํ…Œ์ด๋ธ”์ด ๋จผ์ € ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)



SQL

CREATE TABLE posts (
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT(11) NOT NULL,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    views INT(11) DEFAULT 0,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
    -- user_id๊ฐ€ users ํ…Œ์ด๋ธ”์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋ฉฐ, users ํ…Œ์ด๋ธ”์˜ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์‚ญ์ œ๋˜๋ฉด
    -- ์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๋ฌผ๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๋„๋ก ์„ค์ • (CASCADE)
    -- ON DELETE RESTRICT (๊ธฐ๋ณธ๊ฐ’): ์ฐธ์กฐํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์‚ญ์ œ ๋ถˆ๊ฐ€
    -- ON DELETE SET NULL: ์ฐธ์กฐํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด user_id๋ฅผ NULL๋กœ ์„ค์ • (user_id๊ฐ€ NULL ํ—ˆ์šฉํ•ด์•ผ ํ•จ)
);



ON DELETE CASCADE๋Š” #์‚ฌ์šฉ์ž #๊ณ„์ •์ด ์‚ญ์ œ๋  ๋•Œ ํ•ด๋‹น #์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋“  #๊ฒŒ์‹œ๋ฌผ๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ON DELETE RESTRICT (์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์œ„๋ฐฐ ์‹œ ์‚ญ์ œ ๋ถˆ๊ฐ€) ๋˜๋Š” ON DELETE SET NULL (์ฐธ์กฐ ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ ์‹œ user_id๋ฅผ NULL๋กœ) ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.







๊ฒฐ๋ก 




์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” #PHP #๊ฒŒ์‹œํŒ #CRUD ๊ตฌํ˜„์„ ์œ„ํ•œ ์ฒซ ๋‹จ๊ณ„๋กœ posts #ํ…Œ์ด๋ธ”์„ #์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ #์ปฌ๋Ÿผ์˜ #๋ฐ์ดํ„ฐ #ํƒ€์ž…๊ณผ ์—ญํ• , ๊ทธ๋ฆฌ๊ณ  #์‚ฌ์šฉ์ž #ํ…Œ์ด๋ธ”๊ณผ์˜ #์™ธ๋ž˜ ํ‚ค ๊ด€๊ณ„ ์„ค์ •์„ ํ†ตํ•ด #๊ฒŒ์‹œํŒ์˜ #๋ผˆ๋Œ€๋ฅผ #๊ฒฌ๊ณ ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.



#ํ…Œ์ด๋ธ” #์„ค๊ณ„๋Š” #์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ #์„ฑ๋Šฅ๊ณผ #์œ ์ง€๋ณด์ˆ˜์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ, ์‹ ์ค‘ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ์ด๋ ‡๊ฒŒ #์„ค๊ณ„๋œ #ํ…Œ์ด๋ธ”์„ ๋ฐ”ํƒ•์œผ๋กœ #๊ฒŒ์‹œ๋ฌผ์„ #์ž‘์„ฑํ•˜๋Š” #๊ธฐ๋Šฅ (Create)์„ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.






PHP ์ค‘๊ธ‰ ๊ฒŒ์‹œํŒ CRUD ํ…Œ์ด๋ธ” ์„ค๊ณ„ posts user_id title content created_at updated_at views ์™ธ๋ž˜ํ‚ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๊ณ„ํ˜• CASCADE


๋ฃจ์  VPN: ๋‹น์‹ ์˜ ์•ˆ์ „ํ•œ ์˜จ๋ผ์ธ ๋™๋ฐ˜์ž!

uploadImage

#VPN์ˆœ์œ„ ์ƒ์œ„๊ถŒ ๋ฃจ์  VPN์œผ๋กœ #๊ตฌ๊ธ€VPN, #๊ฐค๋Ÿญ์‹œVPN, #๋…ธํŠธ๋ถVPN ๋“ฑ ์–ด๋–ค ๊ธฐ๊ธฐ์—์„œ๋“  ์†์‰ฝ๊ฒŒ #VPN์‚ฌ์šฉ๋ฒ• ์ตํžˆ๊ณ  #VPN์šฐํšŒ ๊ฒฝํ—˜ํ•˜์„ธ์š”. #์ค‘๊ตญ์ถœ์žฅVPN ์ด ํ•„์š”ํ•  ๋•Œ, ๋ณต์žกํ•œ #VPN์›๋ฆฌ ๊ณ ๋ฏผ ์—†์ด #VPN์–ดํ”Œ ์ด๋‚˜ #VPN์•ฑ (PC/๋ชจ๋ฐ”์ผ ๋ชจ๋‘ ์ง€์›) ํ•˜๋‚˜๋กœ ๋! #TOUCHVPN, #TURBOVPN ๋ชป์ง€์•Š์€ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์„ #VPN์ฒดํ—˜ ํ•ด๋ณด์„ธ์š”. ๋‹ค์–‘ํ•œ #VPN์ข…๋ฅ˜ ์ค‘ ๋‹จ์—ฐ ๋‹๋ณด์ด๋Š” ๋ฃจ์  VPN! (PROTON VPN๋„ ์ข‹์ง€๋งŒ!) ์ง€๊ธˆ ๋ฐ”๋กœ ๋ฃจ์  VPN๊ณผ ํ•จ๊ป˜ ์•ˆ์ „ํ•˜๊ณ  ์ž์œ ๋กœ์šด ์ธํ„ฐ๋„ท์„ ๋งŒ๋ฝํ•˜์„ธ์š”!


https://vpn.luzensoft.com