การใช้ php เชื่อมต่อกับ mssql 2008 ค่ะ มันขึ้น error แบบนี้ :: Unable to connect to server
คือตอนนี้ Config พวก php กับ extension ได้แล้วครับ แต่มันไม่รู้จักกับ Server ของ TFM_HR_SERVER\sqlexpress ครับ
Date :
2013-08-13 10:50:13
By :
mr.win
ถ้าไม่ได้ใช้ sql 2000 หรือรุ่นเก่ากว่านั้น
แนะนำให้ใช้ sqlsrv ดีกว่าใช้ mssql ครับ
mssql เก่ามากแล้ว
Date :
2013-08-13 14:29:41
By :
ห้ามตอบเกินวันละ 2 กระทู้
ใช้ windows server 2012 กับ sql server 2008 express
แต่ใช้ appserv ?????
แนะนำให้เอา appserv ออกไปเลยครับ
แล้วติดตั้ง iis 8 และ php ตามนี้
http://hubpages.com/hub/Setup-IIS-8-and-PHP-on-Windows-Server-2012
หรือ http://www.rackspace.com/knowledge_center/article/installing-php-on-windows-server-2012 อันใดอันหนึ่ง
แนะนำลง php 5.4.x
สร้าง phpinfo.php ไว้ที่ inetpub\wwwroot แล้วรันดู (โค้ดตามตัวอย่างด้านบน) ถ้าไม่ error แสดงว่ารัน php ได้
และให้จำตรง Loaded Configuration File เข้าไว้สมมติว่าเป็น C:\Program Files (x86)\PHP\v5.4.17\php.ini แล้วกัน
เสร็จแล้วไปโหลด sqlsrv ที่ http://www.microsoft.com/en-us/download/details.aspx?id=20098
พอแตก sqlsrv เสร็จ ให้ก็อป php_pdo_sqlsrv_54_nts.dll กับ php_sqlsrv_54_nts.dll ใช้ nts เพราะ iis ใช้ non thread safe
ไปไว้ที่ C:\Program Files (x86)\PHP\v5.4.17\ext
เสร็จแล้วไปแก้ php.ini
ให้เพิ่ม
extension=php_pdo_sqlsrv_54_nts.dll
extension=php_sqlsrv_54_nts.dll
ไว้ตรงส่วน extension ของ php.ini (หาเองแล้วกัน)
เสร็จแล้วลองโค้ด connect ดู ในตัวอย่างโค้ดใช้ pdo
Code (PHP)
<?php
$dns = 'sqlsrv:Server=localhost\sqlexpress;Database=northwind;';
$dbh = new PDO($dns, '', ''); //pdo($dns, user, pass)
$query = 'SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy, BirthDate, Address, City, Country FROM Employees;';
$stmt = $dbh->prepare($query);
$stmt->execute();
while ($result = $stmt->fetch(PDO::FETCH_OBJ)) {
echo '<tr>';
echo "<td><img src=\"images/imageicon.png\"
onmouseover=\"javascript:showtrail('imagedb.php?db=sqlsrv&id={$result->EmployeeID}');\"
onmouseout=\"javascript:hidetrail();\" style=\"border-width:0px;\" /></td>";
echo "<td>{$result->TitleOfCourtesy} {$result->LastName} {$result->FirstName}</td>";
echo "<td>{$result->Title}</td>";
echo "<td>" . (new DateTime($result->BirthDate))->format('d M Y') . "</td>";
echo "<td>{$result->Address}</td>";
echo "<td>{$result->City}</td>";
echo "<td>{$result->Country}</td>";
echo "</tr>\n";
}
?>
Date :
2013-08-14 10:28:23
By :
ห้ามตอบเกินวันละ 2 กระทู้
ใช้ pdo แบบมี parameter
Code (PHP)
<%php
//pdo with blob
$dns = 'sqlsrv:Server=localhost\sqlexpress;Database=northwind;';
$dbh = new PDO($dns, '', '');
$query = "SELECT Photo FROM Employees WHERE EmployeeID = :employeeID";
$stmt = $dbh->prepare($query);
$stmt->bindParam(':employeeID', $id, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);
header("Content-type: image/bmp");
print substr(pack('H*', $result->Photo), 78); // remove ole header
%>
Date :
2013-08-14 10:49:47
By :
ห้ามตอบเกินวันละ 2 กระทู้
หรือไม่อยาก set ให้เมื่อยตุ้ม ใช้ฟังก์ชั่น odbc แทนครับ
<?php
$servername = ""; //เชื่อมต่อ server
$databasename = ""; //เชื่อมต่อ database หรือ MsSQL
$user = ""; //username หรือ connect database
$pass = ""; //password
$connection_string ="DRIVER={SQL Server};SERVER=$servername;DATABASE=$databasename;AutoTranslate=no";
$connms = odbc_connect($connection_string,$user, $pass) or die ("ไม่สามารถเชื่อมต่อ server ได้");
*/
?>
<?php
$sql=".....";
$qr=odbc_exec($connms,$sql);
$rs=odbc_fetch_array($qr);
?>
Date :
2013-08-14 10:51:26
By :
compiak
odbc ช้า ไม่แนะนำให้ใช้
จับเวลาดูแล้วโค้ดแค่นี้
pdo ใช้ 0.0152 วิ
odbc ใช้ 0.4428 วิ
Date :
2013-08-14 10:54:18
By :
ห้ามตอบเกินวันละ 2 กระทู้
ลองระบุ IP เครื่องไปเลยครับ
Code (PHP)
try{
$hostname = "192.168.5.11"; //host
$dbname = "dbname"; //db name
$username = "sa"; //username like 'sa'
$pw = "1234"; //password for the user
$db = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
//หรือ
$objConnect = mssql_connect("192.168.5.11","sa","1234") or die("Error Connect to Database");
$objDB = mssql_select_db("dbname");
Date :
2013-08-14 15:34:29
By :
Manussawin
คุณเปิด allow tcp/ip หรือยัง
Date :
2013-08-14 23:19:42
By :
PlaKriM
ลองระบุ port ดู แล้วกัน
Code (PHP)
<?
$objConnect = mssql_connect("TFM_HR_SERVER\\sqlexpress:1433","sa","tigersoft") or die("Error Connect to Database");
$objDB = mssql_select_db("CyberHRM");
?>
ปล. เราสังเกตเห็น \ ตรง TFM_HR_SERVER\sqlexpress ถ้าใช้ double quote ให้ ecape char เป็น \\ ด้วยนะ
แต่ถ้าเป็น single quote ไม่ต้อง สามารถใช้ \ ได้เลย
ว่าแต่ไม่สนใจเอา appserv ออกจริงๆ เหรอ ต้อง set server เอง database เองสนุกนะ
Date :
2013-08-15 08:38:32
By :
ห้ามตอบเกินวันละ 2 กระทู้
Load balance : Server 00