Connect database จาก SQL Server ไม่สามารถติดต่อฐานข้อมูลได้
เช็ค Host ให้ดีครับ ไม่น่าจะเขียนอย่างนี้นะครับ ผมก็ไม่แน่ใจเหมือนกันปกติทำบนเว็บเลยมันก็จะเป็น Localhost หรือ 127.0.0.1
ประวัติการแก้ไข 2014-06-22 16:13:24
Date :
2014-06-22 16:12:03
By :
kuzaa516
การกำหนด ชื่อ Host แบบนี้ก็ใช้ได้ครับ มันเป็น Alias ในวง lan เดียวกันครับ แต่ต้องแน่ใจว่า พิมพ์ถูกต้องแล้ว
09.if (@!$connect = mssql_connect($host, $username, $password)){
แต่ code แบบบันทัด 9 ผมไม่เคยเห็นนะครับ
น่าจะเขียนแบบนี้นะครับ
09.if (!($connect = @mssql_connect($host, $username, $password))){
อันนี้ไม่แน่ใจนะครับ ผมมันโปรแกรมเมอร์รุ่นเก่า อาจจะเป็นนวัตกรรมใหม่ก็ได้
12.if (@!mssql_select_db($db, $connect)){
นี่ก็เหมือนกันครับ
12. if (!@mssql_select_db($db, $connect)){
คือที่ผมใช้ @ เพื่อบังคับให้ไม่แสดง error ออกมา ถ้าโปรแกรมยังไม่เรียบร้อย หรือกำลังทดสอบ
ก็ไม่ควร ใส่นะครับ มันจะได้แจ้ง error ให้เรารู้
ประวัติการแก้ไข 2014-06-22 16:43:55
Date :
2014-06-22 16:40:31
By :
Chaidhanan
เห็นไหมครับ พอแก้แล้ว ก็จะเห็น error ทีนี้เราก็ต้องแก้ไข บันทัด 9 ตามคำแนะนำของ error message;
เอาโค๊ดที่แก้ไขแล้ว มาดูอีกทีครับ
แต่ผมเดาว่า Server ไม่ได้ทำ Trustee ให้เครื่องข้างนอก เชื่อมต่อเข้ามา
ด้วย user sa เพราะ sa นี่เปรียบเสมือน root ของ MySql ซึ่งส่วนใหญ่จะให้เฉพาะ LocalHost เท่านั้นครับ
Date :
2014-06-23 05:33:52
By :
Chaidhanan
เปลี่ยนฟังก์ชั่นครับ mssql เก่ามากแล้วครับ เปลี่ยนมาใช้ -> sqlsrv
ปล.ไม่ทราบว่าใช้ตัวไหนจำลองเซิร์ฟ ผมใช้ IIS 6 + sql server 2008
Code (PHP)
$serverName = "localhost";
$userName = 'sa';
$userPassword = '12345678';
$dbName = "MRPASI_TASA";
$connectionInfo = array("Database"=>$dbName,"UID"=>$userName, "PWD"=>$userPassword);
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
การเรียกใช้ก็ใช้เหมือน mssql เพียงแต่ เปลี่ยนนิดหน่อย
Code (PHP)
$sql="SELECT * FROM TABLE";
$qr=sqlsrv_query($conn,$sql) or die("Error Query[".$sql."]");
$rs=sqlsrv_fetch_array($qr,SQLSRV_FETCH_ASSOC);
ประมาณนี้ครับ
Date :
2014-06-23 13:12:43
By :
compiak
ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-06-23 05:33:52
ตอนนี้ connect ได้เรียบร้อยแล้วค่ะ ปัญหาใหม่เกิดค่ะ เนื่องจาก select ข้อมูลเก็บข้อมูลเป็น JSON
ตอนนี้ ข้อมูลที่เป็นภาษาไทย ไม่ดึงมาให้ค่ะ แต่หากดึง filed ภาษาอังกฤต มาไม่มีปัญหาในการเก็บข้อมูลค่ะ
ดึง filed cusname1 ภาษาไทย
{"Customer":[{"cust_id":1549,"cuscode":"0001","cusname1":""},{"cust_id":1550,"cuscode":"0002","cusname1":"\u02e8"}]}
กับ
ดึง filed cusname1 ภาษาอังกฤต
{"Customer":[{"cust_id":1549,"cuscode":"0001","cusname1":"SPAN HOLD"},{"cust_id":1550,"cuscode":"0002","cusname1":"BATHWORLD .LTD"}]}
Date :
2014-06-24 00:24:52
By :
moo
ลองดูข้อมูลจริงว่ามีภาษาไทยใน table จริงๆหรือเปล่า โดย ใช้ Tool ของ SQL Server เข้าไปดูตารางเลยครับ
ดูในส่วนของ cusname1 ว่ามีภาษาไทยจริงหรือเปล่า
ถ้าไม่มีก็ลอง insert หรือแก้ field ที่เป็นภาษาไทยให้มีข้อมูลเป็นภาษาแล้วลอง โปรแกรมอีกครั้ง
================================
พอดีกลับไปอ่าน เห็นว่าเก็บเป็น json
การเก็บ ภาษาไทย ด้วย json ต้องเปลี่ยนแปลงนิดครับ
$test = array('1', 'abcdefghi', 'ภาษาไทย');
สมมติ array เป้นแบบข้างบนนะครับ
$buffer=addslashes($test[2]); // ทำ buffer ข้อมูลภาษาไทยไว้ก่อนแถมใส่ addslash.ให้ด้วย สำหรับ statment SQL
$test[2]='ThaiSymBolByMe'; // แก้ภาษาไทยให้เป็นแบบนี้ เน้นนะครับ แบบนี้เลย
$js_text=json_encode($test); // encript ไปที่ $js_text;
$for_query=preg_replace('/ThaiSymBolByMe/',$buffer, $js_text); // ค่อยใส่ภาษาไทยกลับเข้าไป
echo $for_query; // แสดงมันออกมาดูหน่อย ก่อนยัดเข้า sql statement
ที่ทำแบบนี้ เพราะ json มันจะแปลงภาษาไทยให้อยู่ในรูป /u9ab9 ครับ และเวลาเรียกมาใช้งานต้องแปลงกลับ
แถมอ่านไม่ออกใน database ด้วย เลยสงเคราะห์มันซะหน่อยทำให้ก่อน
แล้วเราก็ตัวแปร $for_query ไปใช้ทำ query ครับ
ประวัติการแก้ไข 2014-06-24 01:53:41
Date :
2014-06-24 01:10:04
By :
Chaidhanan
Load balance : Server 05