cafe24 웹호스팅(apache, php, mysql)에서 외부에 있는 MSSQL 접속후 데이터 가져오는 방법 입니다.
cafe24 웹호스팅는 여러사람이 공용으로 쓰는 환경이기에 php 확장 모듈을 내 마음대로 설치할수가 없습니다. 자료를 이것 저것 찾아 보다가 ChatGPT 심층 리서치 기능을 사용해서 방법을 찾아보고 적용했더니 정상 작동 하여 기록용으로 남겨 둡니다.

나의 cafe24 웹호스팅 환경정보
echo "<h3>PHP 버전 확인</h3>";
echo "PHP 버전: " . phpversion();
// extensions.php 파일 생성
echo "<h3>설치된 PHP 확장 목록</h3>";
echo "<pre>";
print_r(get_loaded_extensions());
echo "</pre>";
// 특정 확장 확인
echo "<h3>php에 MSSQL 관련 확장 확인</h3>";
echo "sqlsrv 확장: " . (extension_loaded('sqlsrv') ? '<b style=\'color:blue;\'>설치됨</b>' : '설치되지 않음') . "<br>";
echo "pdo_sqlsrv 확장: " . (extension_loaded('pdo_sqlsrv') ? '<b style=\'color:blue;\'>설치됨</b>' : '설치되지 않음') . "<br>";
echo "odbc 확장: " . (extension_loaded('odbc') ? '<b style=\'color:blue;\'>설치됨</b>' : '설치되지 않음') . "<br>";
echo "pdo_odbc 확장: " . (extension_loaded('pdo_odbc') ? '<b style=\'color:blue;\'>설치됨</b>' : '설치되지 않음') . "<br>";
echo "pdo_dblib 확장: " . (extension_loaded('pdo_dblib') ? '<b style=\'color:blue;\'>설치됨</b>' : '설치되지 않음') . "<br>";
PHP 버전: 8.2.7p1
설치된 PHP 확장 목록
Array
(
[0] => Core
[1] => date
[2] => libxml
[3] => pcre
[4] => sqlite3
[5] => zlib
[6] => bcmath
[7] => bz2
[8] => ctype
[9] => dba
[10] => dom
[11] => hash
[12] => fileinfo
[13] => filter
[14] => ftp
[15] => gd
[16] => gettext
[17] => json
[18] => SPL
[19] => mbstring
[20] => session
[21] => standard
[22] => PDO
[23] => pdo_sqlite
[24] => openssl
[25] => posix
[26] => random
[27] => Reflection
[28] => exif
[29] => SimpleXML
[30] => soap
[31] => sockets
[32] => sysvmsg
[33] => sysvsem
[34] => sysvshm
[35] => tokenizer
[36] => xml
[37] => xmlreader
[38] => xmlwriter
[39] => zip
[40] => mysqlnd
[41] => apache2handler
[42] => mysqli
[43] => pdo_mysql
[44] => curl
[45] => iconv
[46] => Phar
[47] => funcall
[48] => intl
[49] => xsl
[50] => oci8
[51] => imagick
[52] => pdo_dblib
[53] => ionCube Loader
)
MSSQL 관련 확장 확인
- sqlsrv 확장 : 설치되지 않음
- pdo_sqlsrv 확장: 설치되지 않음
- odbc 확장 : 설치되지 않음
- pdo_odbc 확장 : 설치되지 않음
- pdo_dblib 확장 : 설치됨
위 라이브러리들 중 pdo_dblib 확장 라이브러리가 설치 되어 있어서 이것을 이용해서 DB 연결 작업을 하였고 성공 하였습니다.
인터넷에 찾아보니 비슷한 글이 있네요. : 요즘 검색보다 ChatGPT나 클로드를 이용해서 코딩하니 잘 몰랐네요.
https://www.php.net/manual/en/ref.pdo-dblib.php
다른것 pdo_sqlsrv, pdo_odbc 로 하는 예제는 많았는데 설치가 안되어 있어서 성공못하고 드라이버가 없다는 에러가 출력됨
연결 실패: could not find driver
PHP에서 pdo_dblib 확장 라이브러리를 사용한 외부 MSSQL 서버 연결후 데이터 가져오기 성공방법
성공한 방법
<?php
$dsn = "dblib:host=111.111.111.111:1433;dbname=데이터베이스명;"; // MSSQL 서버 IP와 포트, DB명
$user = "아이디"; // MSSQL 로그인 아이디 (예: sa)
$password = "비밀번호"; // MSSQL 로그인 비밀번호
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "연결 성공!";
// ⭐️ 1. SELECT 예제 (데이터 조회)
$stmt = $pdo->prepare("SELECT id, username, email FROM users WHERE id = :id");
$stmt->execute([':id' => 1]); // id가 1인 데이터 조회
$userData = $stmt->fetch(PDO::FETCH_ASSOC);
if ($userData) {
echo "조회된 정보: ";
print_r($userData);
} else {
echo "조회된 데이터가 없습니다.";
}
echo "<br><br>";
// ⭐️ 2. INSERT 예제 (데이터 삽입)
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->execute([
':username' => 'newuser',
':email' => 'newuser@example.com'
]);
echo "INSERT 성공, 삽입된 ID: " . $pdo->lastInsertId() . "<br><br>";
// ⭐️ 3. UPDATE 예제 (데이터 수정)
$stmt = $pdo->prepare("UPDATE users SET email = :email WHERE username = :username");
$stmt->execute([
':email' => 'updateduser@example.com',
':username' => 'newuser'
]);
echo "UPDATE 성공, 영향을 받은 행 수: " . $stmt->rowCount() . "<br><br>";
// ⭐️ 4. DELETE 예제 (데이터 삭제)
$stmt = $pdo->prepare("DELETE FROM users WHERE username = :username");
$stmt->execute([':username' => 'newuser']);
echo "DELETE 성공, 삭제된 행 수: " . $stmt->rowCount() . "<br>";
} catch(PDOException $e) {
die("데이터베이스 연결 오류: " . $e->getMessage());
}
?>
결론
php 에서 mssql 연결후 데이터 가져오는 방법은 여러가지가 있겠지만 현재 cafe24(카페24) 웹호스팅에서는 기본적으로 pdo_dblib 확장 라이브러리가 설치되어 있기 때문에 이것을 이용해서 성공 하였음
다른글들:
2024.03.08 - [HTML] - HTML 웹페이지를 실제 프린트 했을때 똑같은 모양으로 만드는 방법
HTML 웹페이지를 실제 프린트 했을때 똑같은 모양으로 만드는 방법
사용자가 보는 웹페이지를 프린트 하고 싶을때 어떤 방법을 사용하는지 알아보기@media print 쿼리를 이용해서 웹에서 보는 페이지와 실제 프린트로 내보내는 화면이 동일하게 구성하는 방법 HTM
dtbb.tistory.com
2025.03.21 - [AI] - 클로드에서 웹 검색 이용하기(f. playwright-mcp-server)
클로드에서 웹 검색 이용하기(f. playwright-mcp-server)
클로드는 웹 검색을 이용할수 없는데 최근 나온 MCP 를 활용하면 웹 검색을 이용할수 있습니다.하지만 클로드 웹상에서는 안되고 클로드 데스크탑 프로그램을 설치후 여기서 이용 해야 합니다.
dtbb.tistory.com
2024.03.25 - [Python] - 폴더내 모든 파일명 일괄 변경하기
폴더내 모든 파일명 일괄 변경하기
캡쳐한 파일의 파일명의 접두어를 다른것으로 바꿔야할 경우가 있어서 일괄로 파일명을 바꾸는 작업을 수행함 참고 : https://hogni.tistory.com/35 작업목표 : 파일명에 Cap 들어간것을 화면캡쳐 로
dtbb.tistory.com
2024.07.23 - [PHP] - 웹에디터(SmartEditor2) 에 이미지 복사 붙여넣기후 PHP 서버에 저장 및 경로변경
웹에디터(SmartEditor2) 에 이미지 복사 붙여넣기후 PHP 서버에 저장 및 경로변경
그림판의 이미지를 복사후 웹에디터(SmartEditor2)에 붙여넣기하면 웹에디터(SmartEditor2) 에 이미지 복사 붙여넣기후 PHP 서버에 저장 및 경로변경]*src="data:image\/png;base64,([^"]*)"[^>]*>/i'; // 정
dtbb.tistory.com
2024.09.27 - [PHP] - 윈도우 PHP 서버에서 TesseractOCR 실행하기
윈도우 PHP 서버에서 TesseractOCR 실행하기
윈도우 PHP 서버에서 TesseractOCR 라이브러리를 실행하려고 했는데 실패를 많이함.리눅스는 composer로 쉽게 가능한데 윈도우는 기본적으로 composer가 설치되어 있지 않아서 설치후 가져왔는데도 계속
dtbb.tistory.com
'PHP' 카테고리의 다른 글
윈도우 PHP 서버에서 TesseractOCR 실행하기 (2) | 2024.09.27 |
---|---|
웹에디터(SmartEditor2) 에 이미지 복사 붙여넣기후 PHP 서버에 저장 및 경로변경 (2) | 2024.07.23 |
php 에서 xml 데이터를 제대로 파싱하지 못하는 경우 확인해 볼것 (2) | 2024.06.28 |
PHP 에서 CURL 사용하기 (1) | 2024.04.25 |
PHP 출력 <<< EOF 내에서 함수 사용하기 (0) | 2023.08.24 |