PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

nantapornnt
PHP Jr. Member
PHP Jr. Member
Posts: 17
Joined: 07/10/2009 12:05 am

PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by nantapornnt » 07/10/2009 12:11 am

ขอความช่วยเหลือหน่อยนะคะ
พอดีต้องทำโปรเจคจบแล้วต้องใช้ฐานข้อมูล MS SQL SERVER2005
ลองทำหลายวิธีแล้วไม่ได้ซักทีคะ
หาอ่านจากหลาย ๆ เว็บแล้วก็ยังไม่ได้คะ

===ส่วนของ CODE ===

Code: Select all

<?php

$server = 'NANNY-132E09C76\SQLEXPRESS';
$user = 'sa';
$pass = '12345';
$db_name = 'db_project';

$connect_string = "DRIVER = {SQLServer}; SERVER=$server; DATABASE = $db_project; AutoTranslate=no;";
$conn = odbc_connect($connect_string,$user,$pass);

if(!$conn)
	die("Can not connect to server !!!!");

mssql_select_db($db_name,$conn) or die ("เลือกฐานข้อมูลไม่ได้");


?>

Code: Select all

===ส่วนของ ERROR ===
Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\AppServ\www\connect.php on line 8
Can not connect to server !!!!
Last edited by nantapornnt on 07/10/2009 1:24 am, edited 1 time in total.

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23245
Joined: 22/09/2008 6:18 pm
Contact:

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by mindphp » 07/10/2009 12:31 am

ลงโค้ดกรุณาครอบโค้ดด้วยครับ

วิธีติดต่อ Mssql มี 3 วิธี
1. โดยใช้ function ของ mssql mssql_connect()

Code: Select all

<?php
$myServer = "localhost";
$myUser = "your_name";
$myPass = "your_password";
$myDB = "examples";

//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer");

//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
  or die("Couldn't open database $myDB");

//declare the SQL statement that will query the database
$query = "SELECT id, name, year ";
$query .= "FROM cars ";
$query .= "WHERE name='BMW'";

//execute the SQL query and return records
$result = mssql_query($query);

$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";

//display the results
while($row = mssql_fetch_array($result))
{
  echo "<li>" . $row["id"] . $row["name"] . $row["year"] . "</li>";
}
//close the connection
mssql_close($dbhandle);
?>
2. ติดต่อผ่าน odbc

Code: Select all

<?php

//connect to a DSN "myDSN"
$conn = odbc_connect('myDSN','','');

if ($conn)
{
  //the SQL statement that will query the database
  $query = "select * from cars";
  //perform the query
  $result=odbc_exec($conn, $query);

  echo "<table border=\"1\"><tr>";

  //print field name
  $colName = odbc_num_fields($result);
  for ($j=1; $j<= $colName; $j++)
  { 
    echo "<th>";
    echo odbc_field_name ($result, $j );
    echo "</th>";
  }

  //fetch tha data from the database
  while(odbc_fetch_row($result))
  {
    echo "<tr>";
    for($i=1;$i<=odbc_num_fields($result);$i++) 
    {
      echo "<td>";
      echo odbc_result($result,$i);
      echo "</td>";
    }
    echo "</tr>";
  }

  echo "</td> </tr>";
  echo "</table >";

  //close the connection
  odbc_close ($conn);
}
else echo "odbc not connected";
?>
3.ติดต่อผ่าน COM ADODB

Code: Select all

<?php
$myServer = "localhost";
$myUser = "your_name";
$myPass = "your_password";
$myDB = "examples";

//create an instance of the  ADO connection object
$conn = new COM ("ADODB.Connection")
  or die("Cannot start ADO");

//define connection string, specify database driver
$connStr = "PROVIDER=SQLOLEDB;SERVER=".$myServer.";UID=".$myUser.";PWD=".$myPass.";DATABASE=".$myDB;
  $conn->open($connStr); //Open the connection to the database

//declare the SQL statement that will query the database
$query = "SELECT * FROM cars";

//execute the SQL statement and return records
$rs = $conn->execute($query);

$num_columns = $rs->Fields->Count();
echo $num_columns . "<br>"; 

for ($i=0; $i < $num_columns; $i++) {
    $fld[$i] = $rs->Fields($i);
}

echo "<table>";

while (!$rs->EOF)  //carry on looping through while there are records
{
    echo "<tr>";
    for ($i=0; $i < $num_columns; $i++) {
        echo "<td>" . $fld[$i]->value . "</td>";
    }
    echo "</tr>";
    $rs->MoveNext(); //move on to the next record
}


echo "</table>";

//close the connection and recordset objects freeing up resources 
$rs->Close();
$conn->Close();

$rs = null;
$conn = null;
?>
ตัวอย่าง sql

Code: Select all

CREATE DATABASE examples;
USE examples;
CREATE TABLE cars(
   id int UNIQUE NOT NULL,
   name varchar(40),
   year varchar(50),
   PRIMARY KEY(id)
);

INSERT INTO cars VALUES(1,'Mercedes','2000');
INSERT INTO cars VALUES(2,'BMW','2004');
INSERT INTO cars VALUES(3,'Audi','2001');
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

nantapornnt
PHP Jr. Member
PHP Jr. Member
Posts: 17
Joined: 07/10/2009 12:05 am

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by nantapornnt » 07/10/2009 4:17 am

ทำได้แล้วค่ะ ^^

ขอบคุณมาก ๆ เลยนะคะสำหรับคำแนะนำ

แล้วก็ต้องขอโทษด้วยนะที่ไม่ได้ครอบโค้ดตอนตั้งกระทู้
พอดีเพิ่งเข้ามาเป็นสมาชิกเว็บและเพิ่งลองตั้งกระทู้ครั้งแรกค่ะ

ปล.
ต่อไปถ้ามีปัญหาอะไรที่เกี่ยวกับ php คงจะต้องเข้ามาแต่เว็บนี้แล้วละ
adminตอบกระทู้ได้รวดเร็วทันใจมากกกกก

ขอบคุณจริง ๆ ค่ะ

nantapornnt
PHP Jr. Member
PHP Jr. Member
Posts: 17
Joined: 07/10/2009 12:05 am

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by nantapornnt » 07/10/2009 4:37 am

ขอรบกวนถามอีกคำถามนะคะ
พอดีว่าลองหัดเขียนโค้ดให้แสดงข้อมูล
ถ้าเป็นตารางเดียวมันจะแสดงข้อมูล
แต่พอลองเชื่อมตารางมันไม่ได้อ่ะคะ

Code: Select all

<?php
$server = "NANNY-132E09C76\SQLEXPRESS";
$user = "sa";
$pass = "12345";
$db_name = "db_project";

$con = mssql_connect($server,$user,$pass)
	or die("Couldn't connect to SQL Server !!!");
	
mssql_select_db($db_name,$con) 
	or die ("Couldn't open Database");

$query = "SELECT tbl_person.ID, tbl_person.FName, tbl_person.LName, tbl_person.Start_day, tbl_section.Section, tbl_group.Groups, tbl_part.Part";
$query += "FROM tbl_person INNER JOIN tbl_section ON tbl_person.ID_section = tbl_section.ID_section";
$query += "INNER JOIN tbl_part ON tbl_person.ID_part = tbl_part.ID_part";
$query += "INNER JOIN tbl_group ON tbl_person.ID_group = tbl_group.ID_group";

$result = mssql_query($query,$con);

echo "<table border=2 width=600>";

while($rs=mssql_fetch_array($result))
{
	echo "<tr>";
	echo "<td>$rs[ID]</td>";
	echo "<td>$rs[FName]</td>";
	echo "<td>$rs[LName]</td>";
	echo "<td>$rs[Start_day]</td>";
	echo "<td>$rs[Section]</td>";
	echo "<td>$rs[Groups]</td>";
	echo "<td>$rs[Part]</td>";
	echo "</tr>";
}
echo "</table>";
mssql_close($con);

?>
มันขึ้น ERROR อย่างนี้คะ

Code: Select all

Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near '0'. (severity 15) in C:\AppServ\www\test2.php on line 9

Warning: mssql_query() [function.mssql-query]: Query failed in C:\AppServ\www\test2.php on line 9

Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in C:\AppServ\www\test2.php on line 13
 

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23245
Joined: 22/09/2008 6:18 pm
Contact:

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by mindphp » 07/10/2009 9:25 am

เชื่อม string ต้องใช้

Code: Select all

.= 
ครับ ไม่ใช่

Code: Select all

+=
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

nantapornnt
PHP Jr. Member
PHP Jr. Member
Posts: 17
Joined: 07/10/2009 12:05 am

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by nantapornnt » 07/10/2009 1:19 pm

ตอนแรกเชื่อม string โดยใช้

Code: Select all

.=
แล้วมัน error ค่ะ

เลยลองมั่วๆ โดยใช้

Code: Select all

+=
ก็ error อีกค่ะ

แต่ตอนนี้ทำได้แล้วค่ะ โดยการเขียนโค้ดยาว ๆ ติด ๆ กันเลยค่ะ (เพราะกลัวว่าถ้าเชื่อมแล้วมันจะ error อีก)

ขอถามอีกคำถามนะคะ

พอดี copy ไฟล์ ฐานข้อมูล(.mdf , .ldf)ไม่ได้ค่ะ

มันขึ้น error ว่า

Code: Select all

Cannot copy db_project: It is being used by another person or program.
Close an programs that might be using the file and try again
ต้องทำยังไงหรอค่ะ ??

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23245
Joined: 22/09/2008 6:18 pm
Contact:

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by mindphp » 07/10/2009 4:12 pm

เชื่อม string ต้องใช้ . บรรทัดเดียว
หรือ .= เชื่อมตามที่แนะนำแบบหลายบรรทัด
ส่วนเรื่อง copy ไม่น่าจะเกี่ยวกับ หมวด php นะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

korn

Re: PHP เชื่อมฐานข้อมูล MS SQL SERVER2005 ไม่ได้

Post by korn » 09/07/2014 1:09 pm

ในเครื่อง หมาย " " ต้องเว้น วรรค อย่างน้อย 1 ครั้ง หน้า หรือหลัง หรืองทั้ง 2 อย่าง ก็ดีครับ
ประมาณนี้
$query .= " INNER JOIN tbl_part ON tbl_person.ID_part = tbl_part.ID_part ";

Post Reply

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 14 guests