2011-05-10 4 views
0

이상한 문제 - PDO를 사용하는 데이터베이스 클래스의 라이브 복사본이 정상적으로 작동합니다. WAMPServer를 사용하여 내 컴퓨터에 복사본이 있습니다. (클래스에서 미리보기)는 다음과 같이PHP - PDO 연결 문자열에서 대체되지 않는 변수

연결 문자열은 다음과 같습니다

$host = 'localhost'; 
$user = 'user'; 
$pass = 'password'; 
$dbname = 'my_dbname'; 

self::$_instance = new PDO('mysql:host=$host;dbname=$dbname', $user, $pass); 

오류 메시지 I은 얻을 :

Warning: PDO::__construct() [pdo.--construct]: php_network_getaddresses: getaddrinfo failed: No such host is known. in <path> on line 41 

Warning: PDO::__construct() [pdo.--construct]: [2002] php_network_getaddresses: getaddrinfo failed: No such host is kn (trying to connect via tcp://$host:3306) in <path> on line 41 

나는 온라인 반면 로컬 작동하지 왜 아무 생각이 없다 괜찮아. 잘 작동 아래 난에 라인 자체를 변경하는 경우 :

self::$_instance = new PDO('mysql:host=localhost;dbname=my_dbname', $user, $pass); 

감사합니다 :)

+0

작은 따옴표를 사용할 때 어떻게 변하는가? – kta

답변

8

사용 따옴표를 new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 그렇지 않으면 변수는 문자열에 삽입되지 않습니다. 다른 방법으로는

new PDO(sprintf('mysql:host=%s;dbname=%s', $host, $dbname), $user, $pass); 
+0

그게 작동합니다 - 고마워요. 그렇지만 라이브로 작동하지만 로컬로 싱글을 사용하지 않는 이유는 무엇입니까? – lethalMango

+1

아마도 라이브 시스템에 대체 서버와 데이터베이스가 정의되어있을 수 있습니다. – DanielB

+0

고마워요 :) 시간이 다 됐을 때 받아 들일 것입니다. – lethalMango

0

변수는 작은 따옴표로 구문 분석되지 않습니다. 그것들을 큰 따옴표로 묶어야합니다.

self::$_instance = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
1
self::$_instance = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 

당신은 큰 따옴표를 사용해야합니다.

0

위의 두 가지 대답은 저에게 적용되지 않습니다. 나는 다음을 사용한다 :

new PDO("mysql:host=".$host.";dbname=".$dbname, $user, $pass);