PHP : PDO를 이용해서 MSSQL에 UTF-8로 접속하기

리눗스에서 MSSQL을 접속하기 위해서는 FreeTDS를 사용한다.  PHP에서 PDO를 이용해서 MSSQL로 접속하기 위해서는 이 FreeTDS를 사용하는 PDO_DBLIB를 사용해야 한다.

다음은 PDO를 사용해서 MSSQL 접속하는 예이다.

$dbh = new PDO("dblib:host=sqlserver;dbname=db;","id","passwd");
$sql = 'UPDATE Category SET Name = N? where CategoryID = ?';
$sth = $dbh->prepare($sql);
$sth->execute(Array($name, $id));

만약에 위의 Category 테이블의 Name 컬림이 NVARCHAR 형태라면 다음처럼 수정을 해야 데이타가 제대로 갱신된다.

$dbh = new PDO("dblib:host=sqlserver;dbname=db;charset=UTF-8","id","passwd");
$sql = 'UPDATE Category SET Name = N? where CategoryID = ?';
$sth = $dbh->prepare($sql);
$sth->execute(Array($name, $id));

[MSSQL] TIMESTAMP 데이타 타입에 관하여

MSSQL의 TIMESTAMP 데이타 타입은 레코드 변경사항이 있을 경우 자동으로 DB에서 유일한 값으로 채워지는 필드이다. MySql과 다르게 이 값은 시간과는 전혀 관계가 없는 데이타이다.

  • 마지막 사용된 값은 @@DBTS에 저장되어 있다.
  • 하나의 테이블에 TIMESTAMP 필드는 하나만 만들 수 있다.
  • 명시적으로 TIMESTAMP 필드를 갱신할 수 없다.
  • VARBINARY(8) 과 동일하다.