Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋””/๋ชจ์˜ ํ•ดํ‚น - ๊ณผ์ œ

[๊ณผ์ œ] 02์ฃผ์ฐจ(1) (์„ฑ์  ํ™•์ธ ํŽ˜์ด์ง€) ์ˆ˜์ •๋ณธ (ํ•œ๊ธ€ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ)

Gearvirus(junyup2) 2023. 11. 3. 14:45
๋ฐœ๊ฒฌ๋œ ์˜ค๋ฅ˜

 
 ๊ธฐ์กด์˜ ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ•  ๋•Œ, ์ž…๋ ฅ์— ๋Œ€ํ•˜์—ฌ 'ํ•œ๊ธ€' ์ธ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  '์˜์–ด' ์ž…๋ ฅ๋งŒ ์ƒ๊ฐํ•˜๊ณ  ์ œ์ž‘
์Šคํ„ฐ๋”” ๋ฉค๋ฒ„ ์ค‘, ํ•œ๊ธ€ ์ž…๋ ฅ ์•ˆ๋จ, ํ•œ๊ธ€ ๊นจ์ง ํ˜„์ƒ ๋“ฑ์ด ๋ฐœ์ƒ ํ•˜์˜€๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์˜ด
ํ•œ๊ธ€์„ ์ถ”๊ฐ€๋กœ ํ…Œ์ŠคํŠธ

  • ํ•œ๊ธ€์„ phpmyadmin ์—์„œ score_table์— ์ถ”๊ฐ€๋กœ ์‚ฝ์ž…

  •  db ๋‚ด๋ถ€์—์„œ SQL query
    • ( SELECT * FROM `score_table` WHERE name = '์ด์ค€์—ฝ' ) ์œผ๋กœ ์งˆ์˜ ๊ฒฐ๊ณผ 

  • ์œ„์™€ ๊ฐ™์ด ์ž˜ ์ฐพ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Œ

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ !!

 

  • DB์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์—†์Œ์„ ์ถœ๋ ฅ
    • ์ •๋ณด๊ฐ€ ์—†์Œ์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ

score.php

	$sql = "select * from score_table where name='{$_GET['student']}'";
	$result = mysqli_query($db_conn, $sql);
	$row = mysqli_fetch_array($result);
	
	$student_name = $row['name'];
	$student_score = $row['score'];
	if(isset($student_name)){
		echo "<font size = 6>" ."$student_name ํ•™์ƒ์˜ ์ ์ˆ˜๋Š” $student_score ์ž…๋‹ˆ๋‹ค." ."</font>";
	}else{		
		if(isset($_GET['student'])){
			echo "<font size = 6>" ."{$_GET['student']} ํ•™์ƒ์˜ ์ •๋ณด๋Š” ์—†์Šต๋‹ˆ๋‹ค." ."</font>";
		}
	}

 

  • $student_name ์—  $_GET['student'] ๊ณผ ์ผ์น˜ํ•˜๋Š” ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
  • BUT, DB์—๋Š” ํ•ด๋‹น ์ด๋ฆ„์ด ์กด์žฌ.
  • ์ฆ‰, ํ•œ๊ธ€์„ ์ œ๋Œ€๋กœ ๋ฐ›์•„๋“ค์ด์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ.

์˜ˆ์ƒ๋˜๋Š” ์˜ค๋ฅ˜์˜ ์›์ธ
  • ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ utf-8 ํ˜น์€ euc-kr๋กœ๋งŒ ์ธ์‹ ๊ฐ€๋Šฅ
    • ์ธ์ฝ”๋”ฉ์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ
ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ
  • SELECT ์‹œ ํ•œ๊ธ€์ด ์ œ๋Œ€๋กœ ์ž…๋ ฅ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
  • INSERT ์‹œ ํ•œ๊ธ€์ด ๊นจ์ ธ์„œ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ 

๊ฐ•์ œ๋กœ ๋ฐœ์ƒ์‹œํ‚จ ํ•œ๊ธ€ ๊นจ์ง ์˜ค๋ฅ˜

์‹œ๋„ํ•ด๋ณธ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ๋“ค
  1. <head> ์•ˆ์— utf-8๋กœ ์„ค์ •
    • <meta charset="utf-8">
    • ๊ธธ๊ฒŒ ์“ฐ๋ฉด <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. <?php ?> ์•ˆ์— header("Content-Type:text/html;charset=utf-8"); ์ถ”๊ฐ€
  3.  form ๋ฉ”์„œ๋“œ์— utf-8 ์ถ”๊ฐ€
    • <form method="post" action=" " accept-charset="utf-8">
  4. php ์—์„œ db ์—ฐ๊ฒฐ ์งํ›„์— ๋‹ค์Œ ์ฟผ๋ฆฌ ์‹คํ–‰
    • set names utf8;
    • ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ(ํ•œ๊ธ€์ด ์—ฌ์ „ํžˆ ๊นจ์ง„๋‹ค๋ฉด) ๋‹ค์Œ ์ฟผ๋ฆฌ ์‹คํ–‰
      • set session character_set_connection = utf8;
      • set session character_set_results = utf8;
      • set session character_set_client = utf8;
  5. /etc/mysql/my.cnf ํŒŒ์ผ ์ˆ˜์ • - my.cnf ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Œ
    • [mysqld] ๊ตฌ๋ฌธ ์•„๋ž˜์ชฝ์— ์ธ์ฝ”๋”ฉ ์„ค์ •์„ ์ถ”๊ฐ€
      • collation-server = utf8_unicode_ci
      • default-character-set = utf8
      • character-set-server = utf8
      • init_connect = set collation_connection = utf8_unicode_ci
      • init_connect = set names utf8
  6. /etc/php/8.1/cli/php.ini ํŒŒ์ผ ์ˆ˜์ •
    • default_charset = "EUC-KR" ๋กœ ์ˆ˜์ •
  7. mysqli_query ๋กœ utf-8 ์„ค์ •
    • mysqli_query($conn, "set session character_set_connection=utf8;");
    • mysqli_query($conn, "set session character_set_results=utf8;");
    • mysqli_query($conn, "set session character_set_client=utf8;");
  8. etc... ์œ„์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์‹œ๋„ ํ•˜์˜€์œผ๋‚˜ ๋ชจ๋‘ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ
    • INSERT ์‹œ ๊นจ์ง ํ˜„์ƒ์— ๋Œ€ํ•ด์„œ๋Š” ์œ„์˜ ๋ฐฉ๋ฒ•๋“ค ์ค‘ ํ•ด๊ฒฐ ๋  ์ˆ˜ ์žˆ์Œ
    • ํ•˜์ง€๋งŒ, ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๊ฐ€ SELECT ์‹œ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ๋ฐฉ๋ฒ•๋กœ๋Š” ํ•ด๊ฒฐ์ด ์•ˆ๋˜์—ˆ์Œ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
  • ๊ฒฐ๊ตญ ์ฐพ์•„์„œ ์„ฑ๊ณตํ•œ ๋‹จ ํ•œ์ค„์˜ ์ฝ”๋“œ.
    • ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์žˆ์„ ์ˆ˜๋Š” ์žˆ์œผ๋‚˜ ์ด ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐ์ด ๋˜์—ˆ์Œ

db_connection.php

<?php
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', '*****');
    define('DB_PASSWORD', '***********');
    define('DB_NAME', 'score');
	
    $db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
    //echo $db_conn ->character_set_name(); # latin1
    $db_conn -> set_charset("utf8");
    //echo $db_conn ->character_set_name(); # utf8
?>

 

  • $db_conn -> set_charset("utf8");
    • ( -> ) ํ™”์‚ดํ‘œ์—ฐ์‚ฐ์ž
  • ๊นจ๋‹ฌ์€ ์‚ฌ์‹ค, ์šฐ์„ ์‹œ ํ•ด์•ผํ•  ๋ฐฉํ–ฅ์„ฑ
    • ๋ฌดํ„ฑ๋Œ€๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ๋Œ€์ž…ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์šฐ์„  ์–ด๋–ค ํ˜•ํƒœ๋กœ ์ธ์ฝ”๋”ฉ ๋˜์–ด์žˆ๋Š”์ง€ ์šฐ์„  ํ™•์ธํ•ด์•ผ ํ•จ
      • echo $db_conn ->character_set_name(); ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉ ํ˜•์‹์„ ํ™•์ธ ๊ฐ€๋Šฅ
        • ์šฐ์„  ์›๋ž˜ ๋“ค์–ด๊ฐ€๋˜ ํ˜•์‹์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ Latin1 ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ํ™•์ธ
          • mysql์˜ charater set ๊ธฐ๋ณธ ์„ค์ •, encoding  ์ดˆ๊ธฐ๊ฐ’์ด latin1์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•จ
        • ์œ„์˜ ์ธ์ฝ”๋”ฉ ํ˜•์‹์ด utf-8์ด ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ธ€์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์€ ๊ฒƒ !!
        • $db_conn -> set_charset("utf8"); ์„ ์ด์šฉํ•˜์—ฌ utf-8๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ
          • utf8๋กœ ๋ฐ”๋€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Œ

์ˆ˜์ •๋ณธ ๊ฒฐ๊ณผ

 

  • ์ œ๋Œ€๋กœ DB์˜ ๋‚ด์šฉ์„ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Œ

ํ›„๊ธฐ

 

๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ๋ฌดํ„ฑ๋Œ€๊ณ  ์ฐพ๋Š”๋‹ค๊ณ  ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹˜์„ ๋‹ค์‹œ๊ธˆ ๊นจ๋‹ฌ์Œ.

์šฐ์„  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์–ด๋–ค ๋ฌธ์ œ์ธ์ง€, ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ์ง€ ๋“ฑ์„ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ์ค‘์š”.

๋˜ํ•œ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ์™€ ๊ฐ™์ด ์–ด๋–ค ํ˜•์‹์ธ์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋“ค์—์„œ์™€ ๊ฐ™์ด ์šฐ์„  ํ˜„์žฌ ์ƒํ™ฉ ํŒŒ์•…์ด ์ค‘์š”.

 

 

Reference

 

 

์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜