Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,514

HOME > PHP > PHP Forum > PHP+MSSQL 2012 ใช้ ODBC เพื่อ insert & query ภาษาไทยกลายเป็นภาษาต่างดาว





 

PHP+MSSQL 2012 ใช้ ODBC เพื่อ insert & query ภาษาไทยกลายเป็นภาษาต่างดาว

 



Topic : 115316



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์




ผมมีปัญหาเกี่ยวกับการ insert และ query ภาษาไทยบน MS SQL Server 2012 โดยใช้ odbc บน PHP แต่พอ insert ไปแล้วมันกลายเป็น ไทย ครับ แต่กลับแสดงผลเป็นภาษาไทยได้ตามปกติ แล้วในทางกลับกันถ้าผม insert ภาษาไทยตรงๆ ลงบน database โดยใช้ SQL Management Studio ด้วย INSERT INTO tablename ('Name') VALUES ('ภาษาไทย') แต่พอแสดงผลกลับกลายเป็น ??? ผมควรทำยังไงดีครับ
ขอบคุณครับ

ข้อมูลเบื้อต้น
1. MS SQL Server 2012, collate -> Thai_CI_AS
2. ในหน้าเว็บใช้ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
3. data type ของ field เป็น nvarchar
4. ตอน insert ด้วย PHP ใช้ตามด้านล่าง

Code (PHP)
$strSQL1 = "insert into tblUsers (FirstName,LastName,UserName,PassWord,Email,PhoneNumber,Misc,UserGroupId,Status,LastLoginTime) ";
	$strSQL1 .= "values (N'".$_POST["txtFirstName"]."',N'".$_POST["txtLastName"]."' ,'".$_POST["txtUsername"]."','".$_POST["txtPassword"]."' ,'".$_POST["txtEmail"]."','".$_POST["txtPhoneNumber"]."',null,".$_POST["txtUserGroupId"].",1,null)";
$objQuery1 = odbc_exec($objConnect,$strSQL1);




Tag : PHP, Ms SQL Server 2012









ประวัติการแก้ไข
2015-03-22 20:25:52
2015-03-22 20:26:43
2015-03-23 09:59:44
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-03-22 20:24:51 By : snowbell View : 2564 Reply : 11
 

 

No. 1



โพสกระทู้ ( 73,941 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ใช้ NVarchar ก็น่าจะถูกแล้วครับ ว่าแต่ตอนที่ Insert แล้วข้อมูลใน Database เป็นภาษาไทยหรือเปล่าครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 08:44:59 By : mr.win
 


 

No. 2



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2015-03-23 08:44:59
รายละเอียดของการตอบ ::
ไม่เป็นภาษาไทยครับ เป็นภาษาต่างดาว อ่านไม่ออกครับ


ภาษาไทยใน MSSQL หลัง insert ด้วย PHP
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 09:58:53 By : snowbell
 

 

No. 3



โพสกระทู้ ( 7,850 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : snowbell เมื่อวันที่ 2015-03-23 09:58:53
รายละเอียดของการตอบ ::
จากตัวอย่างที่ จขกท เอามาให้ดูนี่แหล่ะครับ ขอ code มาดูหน่อยครับ


หรือว่ามันเป็น tool ครับ

ลองอ่านในนี้ดูครับ
http://stackoverflow.com/questions/1322421/php-sql-server-how-to-set-charset-for-connection


ประวัติการแก้ไข
2015-03-23 10:27:03
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 10:02:10 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-03-23 10:02:10
รายละเอียดของการตอบ ::
ไฟล์ register.php เป็นโค้ดสำหรับ insert ลงฐานข้อมูลครับ ส่วนไฟล์ query เป็น check_login.php
connectdb.php
<?php
$server = "localhost\SQLEXPRESS";
$database = "ReserveMeetingRoom";
$user = "sa";
$password = "1234567890";
date_default_timezone_set("Asia/Bangkok");
$objConnect = odbc_connect("Driver={SQL Server Native Client 11.0};Server=$server;Database=$database;Charset=UTF-8", $user, $password) or die("Error Connect to Database");
?>


register.php
<?php
	include("connectdb.php");
	$strSQL1 = "insert into tblUsers (FirstName,LastName,UserName,PassWord,Email,PhoneNumber,Misc,UserGroupId,Status,LastLoginTime) ";
	$strSQL1 .= "values (N'".$_POST["txtFirstName"]."',N'".$_POST["txtLastName"]."','".$_POST["txtUsername"]."','".$_POST["txtPassword"]."','".$_POST["txtEmail"]."','".$_POST["txtPhoneNumber"]."',null,".$_POST["txtUserGroupId"].",1,null)";
		$objQuery1 = odbc_exec($objConnect,$strSQL1);
		
	odbc_close();
?>
<html>
<head>
<title>Register</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="stylesheet/img/devil-icon.png"> <!--Pemanggilan gambar favicon-->
<link rel="stylesheet" type="text/css" href="mos-css/mos-style.css"> <!--pemanggilan file css-->
</head>

<body>
<form action="register.php" id="register" method="post">
<table>
<tr>
	<td>First Name</td>
	<td><input type="text" name="txtFirstName"></td>
</tr>
<tr>
	<td>Last Name</td>
	<td><input type="text" name="txtLastName"></td>
</tr>
<tr>
	<td>Username</td>
	<td><input type="text" name="txtUsername"></td>
</tr>
<tr>
	<td>Password</td>
	<td><input type="text" name="txtPassword"></td>
</tr>
<tr>
	<td>Email</td>
	<td><input type="text" name="txtEmail"></td>
</tr>
<tr>
	<td>Phone number</td>
	<td><input type="text" name="txtPhoneNumber"></td>
</tr>
<tr>
	<td>User group id</td>
	<td><input type="text" name="txtUserGroupId"></td>
</tr>
<tr>
	<td>status</td>
	<td><input type="text" name="txtStatus"></td>
</tr>
</table>
<input type="submit" value="ตกลง">
</form>


</body>
</html>


check_login.php
<?php
ob_start();
session_start();
?>
<html>
<head>
<title>Reservations Meeting</title>
<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php" charset="utf-8">
<link rel="shortcut icon" href="stylesheet/img/devil-icon.png"> <!--Pemanggilan gambar favicon-->
<link rel="stylesheet" type="text/css" href="mos-css/mos-style.css"> <!--pemanggilan file css-->
</head>

<body>
<div id="header">
	<div class="inHeaderLogin"></div>
</div>
<div id="errorForm">
		<div class="informasi" align="center">
			
<?php
	
	include("connectdb.php");
	
	$strSQL = "SELECT * FROM tblUsers WHERE UserName = '".trim($_POST['txtUsername'])."' 
	and PassWord = '".trim($_POST['txtPassword'])."'";
	$objQuery = odbc_exec($objConnect,$strSQL);
	$objResult = odbc_fetch_array($objQuery);
	
	if(!$objResult)
	{
			echo "Username หรือ Password ไม่ถูกต้อง!";
			
	}
	else
	{
			//echo "First name = ".$objResult["FirstName"];
			$_SESSION["member_id"] = $objResult["UserId"];
			$_SESSION["member_user"] = $objResult["UserName"];
			$_SESSION["member_pass"] = $objResult["PassWord"];
			$_SESSION["member_name"] = $objResult["FirstName"]." ".$objResult["LastName"];
			$_SESSION["member_group_id"] = $objResult["UserGroupId"];
			$_SESSION["member_status"] = $objResult["Status"];		
			//$_SESSION["member_active"] = $objResult["active"];

			session_write_close();

			header("location:home.php");

	}
	mssql_close();
?>
		</div>
</div>
</body>
</html>




ประวัติการแก้ไข
2015-03-23 10:33:27
2015-03-23 10:40:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 10:32:55 By : snowbell
 


 

No. 5



โพสกระทู้ ( 7,850 )
บทความ ( 1 )



สถานะออฟไลน์


ใน check_login.php น่าจะผิดตรงนี้นะครับ

08.<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php" charset="utf-8">

แก้เป็น
<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php" >
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 11:17:58 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-03-23 11:17:58
รายละเอียดของการตอบ ::
แก้ไขตามที่บอก แล้วก็ยังไมได้ครับ
ตอนนี้ปัญหาหลัก ๆ คือ insert ด้วย php แต่ query โดยใช้ SQL management studio แล้วมันกลายเป็นภาษาต่างดาว แต่ผมดึงมาแสดงผลในหน้าเว็บ มันกลับแสดงภาษาไทยได้ตามปกติ
กับพอ insert ภาษาไทยเข้า database ตรง ๆ ด้วย management tool มันก็แสดงผลในหน้าเว็บเป็น ????

ผมเลยไม่ insert ภาษาไทย เข้า database ด้วย management tool ตรงๆ ครับ แต่ไปสร้าง php page ขึ้นมาเพื่อ insert ข้อมูลภาษาไทย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-23 11:51:13 By : snowbell
 


 

No. 7



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนคิวรี่ข้องมูลออกมาเเสดงให้คอนเวิดเป็น utf-8 ผมเคยเป็นจำได้ลองใช้ คำสั่งคอนเวิดดูนะคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 16:01:30 By : newalway
 


 

No. 8



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : newalway เมื่อวันที่ 2015-03-24 16:01:30
รายละเอียดของการตอบ ::
ต้องทำทั้ง 2 ทางนะครับ ทั้งตอนเอาเข้าเเละเอาออก

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-24 16:11:21 By : newalway
 


 

No. 9



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : newalway เมื่อวันที่ 2015-03-24 16:11:21
รายละเอียดของการตอบ ::
ต้อง convert จั่งใดครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-13 22:10:37 By : nueng lor
 


 

No. 10



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : newalway เมื่อวันที่ 2015-03-24 16:11:21
รายละเอียดของการตอบ ::
ตอน select ต้องทำแบบนี
select Id,CAST(Name AS VARBINARY(MAX)) as Name from xxxxxx

iconv("UCS-2LE","UTF-8",$data["Name"]);

แล้วตอน insert ต้องทำไงครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-13 22:15:35 By : nueng lor
 


 

No. 11



โพสกระทู้ ( 7,850 )
บทความ ( 1 )



สถานะออฟไลน์


ถ้าทุกอย่างเป็น utf-8 ทั้งหมด ไม่ต้องใช้ iconv แต่เพราะ มันไม่ใช่ utf8
ถ้าดึงมาจาก database แล้วมาแปลงเป็น utf8 นั่นก็แสดงว่าตอนนำเข้าไม่ได้ใช้ utf8

และการใช้ varbinary มาเก็บ text ก็ผิดวัตถุประสงค์อีก
ทำไมไมใช้ text หรือ ntext ในการเก็บอักษร

text สามารถเก็บ ภาษาอังกฤษ และ local language คือเก็บได้ 2 ภาษา

ส่วน ntext สามารถเก็บได้ทุกภาษาบนโลกใบนี้


ในส่วนของ HTML ถ้าประกาศ <meta charset="utf8" > ก็จะสามารถ ทำงานได้กับ ทุกภาษา แค่หา font มารองรับให้ตรงเท่านั้น

และในกรณีที่มี hardcode ที่ไม่ใช่ภาษาอังกฤษ ต้องแน่ใจว่า file type เป็น unicode (utf8 without bomb)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-13 22:30:34 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHP+MSSQL 2012 ใช้ ODBC เพื่อ insert & query ภาษาไทยกลายเป็นภาษาต่างดาว
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่