PHP php, mysql À¥¿¡¼ÀÇ ÇÑ±Û ±úÁüÇö»ó - WEB¼¹ö¿Í DB ¿Í ÀÎÄÚµùÀÌ ´Ù¸¦¶§
¼¹ö°£ÀÇ ÀÎÄÚµùÀÌ ´Ù¸¦ °æ¿ì : ÀÎÄÚµùÀ» ¸ÂÃß´Â ¹æ¹ý
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>
";
}
}
?>