ÃֽŠ°Ô½Ã±Û(DB)
2017.03.13 / 13:41

PHP php, mysql À¥¿¡¼­ÀÇ ÇÑ±Û ±úÁüÇö»ó - WEB¼­¹ö¿Í DB ¿Í ÀÎÄÚµùÀÌ ´Ù¸¦¶§

Mans
Ãßõ ¼ö 328

¼­¹ö°£ÀÇ ÀÎÄÚµùÀÌ ´Ù¸¦ °æ¿ì : ÀÎÄÚµùÀ» ¸ÂÃß´Â ¹æ¹ý

OS , ÆÄÀÏ ½Ã½ºÅÛÀÇ character set : UTF-8

Web Server ÀÇ ±âº» ÀÎÄÚµù : iso-8859-1  , 

DB Server ±âº» ÀÎÄÚµù : euc-kr


À¥¿¡¼­ÀÇ ÇÑ±Û ±úÁü Çö»ó 


MySQLÀ» ÀÌ¿ëÇÏ¿© DB¸¦ ±¸¼ºÇÏ°í, php¿Í ¿¬µ¿ÇÏ¿© Ãâ·ÂÀ» È®ÀÎÇØ º¸·Á Çß´Ù. 

µû¶ó¼­, ´ÙÀ½°ú °°Àº ¼Ò½º¸¦ ÄÚµùÇÏ¿´´Ù. 


<?php // query.php

require_once 'login.php';

$db_server = mysql_connect($db_hostname, $db_username, $db_password); 


if(!$db_server) die ("Unable to connect to MySQL :" . mysql_error());


mysql_select_db($db_database) or die("Unable to select Database : " . mysql_error());


$query = "SELECT * FROM temptest" ; 

$result = mysql_query($query) ; 


if(!$result ) die ( "Database access failed  : "  . mysql_error());


$rows = (mysql_num_rows($result)); 


for($j = 0 ; $j < 5 ; ++$j){

$temp = mysql_result($result, $j, 't2'); 

print("$temp <br>"); 

}

?> 


´ç¿¬È÷ µÇ°ÚÁö ÇÏ°í À¥¿¡ Á¢¼ÓÇغôµ¥ ÀÌ°Ô ¹«½¼ÀÏ?? 




ÇѱÛÀÌ ¸ðµÎ ??? ·Î Ç¥½ÃµÈ´Ù. 

ÀÌÀ¯¸¦ »ý°¢Çغ¸´Ï À¥¿¡¼­ÀÇ ÀÎÄÚµù°ú, MySQL»ó¿¡¼­ÀÇ ÀÎÄÚµùÀÌ ´Þ¶ó¼­ Äõ¸®·Î ³Ñ¾î¿Í¼­ Ãâ·ÂµÉ¶§ ±úÁö´Â°Í °°±âµµ Çѵ¥.... ±×·¡¼­ ¹æ¹ýÀ» ã¾Æ ºÃ´Ù. 




  ¹®Á¦ ÇØ°á


1. ÀÎÄÚµù ¹æ½ÄÀ» ÅëÀÏ (ÄÚµù ÆäÀÌÁö, À¥ Çü½Ä ¸ðµÎ utf8·Î ÅëÀÏ) 

°á·ÐÀº ¼Ò¿ë¾ø¾ú´Ù. ¿©ÀüÈ÷ ÇѱÛÀÌ ±úÁ®¼­ ????·Î Ç¥½Ã µÈ´Ù. 

php ¹®¼­ÀÇ ÀÎÄÚµù Çü½Äµµ ÅëÀÏÇØ¾ß µÈ´Ù°í Çؼ­ Çߴµ¥µµ ¾ÈµÈ´Ù. 


2. iconv() »ç¿ëÇϱâ 

À̹®Á¦·Î ÀÎÇØ ¹æ¹ýÀ» ã¾ÆºÃÀ»¶§ ÀÎÅͳݿ¡¼­ ÇØ°á¹æ¹ýÀ̶ó°í °¡Àå ¸¹ÀÌ ³ª¿Â °ÍÀÌ iconv()ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °Í. 

»ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù. 


iconv("ÇöÀç ÀÎÄÚµù", "¹Ù²Ü ÀÎÄÚµù", ¹Ù²Ü ½ºÆ®¸µ) 


µû¶ó¼­ Àú ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°Àº ¼Ò½º¸¦ Ãß°¡ÇÑ ÈÄ Ãâ·ÂÇغôÙ. 


$temp = iconv('utf8', 'euckr', $temp);


¹°·Ð 1¹øÀ» Çϸ鼭 ¸ðµç ÀÎÄÚµùÀ» utf8·Î ÅëÀÏ ÇßÁö¸¸...Ȥ½Ã³ª Çؼ­ euckr°ú cp949·Î ¹Ù²ã¼­ ´ÙÇغÃÁö¸¸...

¾ÈµÈ´Ù. ¤Ð¤Ð


3. MySQL ÀÔÃâ·Â ÀÎÄÚµùÀ» ÁöÁ¤ 

ÀÌ°ÍÀÌ ´äÀ̾ú´Ù. ÀÔÃâ·Â½Ã ÀÎÄÚµù Çü½ÄÀÌ ´Þ¶ó¼­ ±×·± °ÍÀ̾ú´Âµ¥. ÀÌ°ÍÀ» ÇØ°áÇÏ´Â ¹æ¹ýÀ» °Ü¿ì°Ü¿ì ãÀ» ¼ö ÀÖ¾ú´Ù. 


ÀÚ¼¼ÇÑ ¼³¸íÀº Ǫ¸¥»õº®´ÔÀÇ ºí·Î±×¿¡¼­ ãÀ» ¼ö ÀÖ¾ú´Ù. 


http://sdcho7.egloos.com/2518559


°á±¹ ´ÙÀ½°ú °°Àº ¼Ò½º¸¦ Ãß°¡ÇÔÀ¸·Î½á ÇØ°áÇß´Ù. 


<?php // query.php

require_once 'login.php';

$db_server = mysql_connect($db_hostname, $db_username, $db_password); 


if(!$db_server) die ("Unable to connect to MySQL :" . mysql_error());


mysql_select_db($db_database) or die("Unable to select Database : " . mysql_error());


mysql_query("set session character_set_connection=utf8;");

mysql_query("set session character_set_results=utf8;");

mysql_query("set session character_set_client=utf8;");


$query = "SELECT * FROM temptest" ; 

$result = mysql_query($query) ; 


if(!$result ) die ( "Database access failed  : "  . mysql_error());


$rows = (mysql_num_rows($result)); 


for($j = 0 ; $j < 5 ; ++$j){

$temp = mysql_result($result, $j, 't2'); 

print("$temp <br>"); 

}


Âü°í·Î utf-8 ÇÏ¸é ¾ÈµÈ´Ù. utf8ÇØ¾ß ÇÔ




ÈëÈë ÀÌƲ »ðÁú¸¸¿¡ ÇØ°áÇß´Ù ¤Ð¤Ð¤Ð



* º¸Åë ÀÌ·± ºÎºÐÀº  db.class.php  ¿Í °°Àº ÆÄÀÏ¿¡ Ãß°¡ ¼öÁ¤


  <?


/**

 * MySQL class

 */


class DB

{

var $db_host, $db_user, $db_pass, $db_conn;

var $count;


function DB($iniFile)

{

include $iniFile;

$this->db_host = $db_host;

$this->db_user = $db_user;

$this->db_pass = $db_pass;

$this->connect($db_name);

}


function connect($db_name="")

{

$this->db_conn = @mysql_connect($this->db_host, $this->db_user, $this->db_pass);

if (!$this->db_conn){

$err['msg'] = 'DB connection error..';

$this->error($err);

}

if ($db_name) $this->select($db_name);

}


function select($db_name)

{

$ret = mysql_select_db($db_name);

if (!$ret){

$err['msg'] = 'DB selection error..';

$this->error($err);

}

}


function query($query)

{

$time[] = microtime();

//by aceofcom character set  webserver euckr   dbserver - utf8  database euc-kr

mysql_query("set session character_set_connection=euckr;");

mysql_query("set session character_set_results=euckr;");

mysql_query("set session character_set_client=euckr;");


$res = mysql_query($query, $this->db_conn);

if (preg_match("/^select/",trim(strtolower($query)))) $this->count = $this->count_($res);


if (!$res){

$debug = @debug_backtrace();

if($debug){

krsort($debug);

foreach ($debug as $v) $debuginf[] = $v['file']." (line:$v[line])";

$debuginf = implode("<br>",$debuginf);

}


$err['query'] = $query;

$err['file'] = $debuginf;

$this->error($err);

}


$time[] = microtime();

$this->time[] = get_microtime($time[0],$time[1]);

$this->log[] = $query;


if ($res) return $res;

}


function fetch($res,$mode=0)

{

if (!is_resource($res)) $res = $this->query($res);

return (!$mode) ? @mysql_fetch_array($res) : @mysql_fetch_assoc($res);

}


function count_($result)

    {

        $rows = mysql_num_rows($result);

        if ($rows !== null) return $rows;

    }


function close()

    {

        $ret = @mysql_close($this->db_conn);

        $this->db_conn = null;

        return $ret;

    }


function error($err)

{

//msg("Á¤»óÀûÀÎ ¿äûÀÌ ¾Æ´Ï°Å³ª DB¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù",-1);

echo "

<div style='background-color:#f7f7f7;padding:2'>

<table width=100% border=1 bordercolor='#cccccc' style='border-collapse:collapse;font:9pt tahoma'>

<col width=100 style='padding-right:10;text-align:right;font-weight:bold'><col style='padding:3 0 3 10'>

<tr><td>error</td><td>".mysql_error()."</td></tr>

";

foreach ($err as $k=>$v) echo "<tr><td>$k</td><td>$v</td></tr>";

echo "</table></div>";

//exit();

}


function viewLog()

{

echo "

<table width=800 border=1 bordercolor='#cccccc' style='border-collapse:collapse;font:8pt tahoma'>

<tr bgcolor='#f7f7f7'>

<th width=40 nowrap>no</th>

<th width=100%>query</th>

<th width=80 nowrap>time</th>

</tr>

<col align=center><col style='padding-left:5'><col align=center>

";

foreach ($this->log as $k=>$v){

echo "

<tr>

<td>".++$idx."</td>

<td>$v</td>

<td>{$this->time[$k]}</td>

</tr>

";

}

echo "

<tr bgcolor='#f7f7f7'>

<td>total</td>

<td></td>

<td>".array_sum($this->time)."</td>

</tr>

</table>

";

}

}


?>