2013-04-28 4 views
2

NearlyFreeSpeech MySQL 데이터베이스에 연결하려고합니다. PDM을 통해서가 아니라 PHPMyAdmin을 통해 로그인 할 수 있습니다. 이 코드를 사용하고 있습니다.MySQL 데이터베이스에 대한 PDO 연결이 거부되었습니다.

$dbconn = new PDO('mysql:host=127.0.0.1;dbname='.$config['db'].'; port=3307', $config['user'], $config['pass']); 

여기서 $ config는 별도의 파일에 정의되어 있습니다. 내가 오류는 다음과 같습니다 다음

Warning: PDO::__construct() [pdo.--construct]: [2002] Connection refused (trying to connect via tcp://127.0.0.1:3307) 
Error: SQLSTATE[HY000] [2002] Connection refused 

결국

Fatal error: Call to a member function query() on a non-object in... 

나는 "지금은 가정 연결

mysql:host=localhost 

내가

Error: SQLSTATE[HY000] [2002] No such file or directory 

입니다 얻을 오류를 사용하는 경우 거부했다 "는 것보다 낫다"그런 파일이나 디렉토리가 없다. 나는 여기에서 어디로 가야할지 모르겠다. 왜 이런 일이 일어나는 지 아십니까? 도와 줘서 고마워.

+0

'새로운 PDO'호출의 DSN이 포트 3307을 언급하지만 오류 메시지의 연결이 포트 3306을 거부했습니다. 그렇습니까? – pilsetnieks

+0

다른 것들을 복사하여 붙여 넣기 때문에 미안합니다. 그러나 나는 양쪽을 시험해 보았다. 그리고 항구를 바꾸는 것은 어떤 효과도 가져 오지 않는다. – george

+4

3307을 시도하는 이유가 무엇입니까? –

답변

1

내 기존 함수와 상수 변수를 사용해보십시오. 상수 변수를 배열 변수로 변경할 수도 있습니다.

define("SERVER_SQL_VERSION","mysql"); 
define("SQL_SERVER","localhost"); 
define("SQL_PORT","3306"); 
define("SQL_USERNAME","root"); 
define("SQL_PASSWORD",""); 
define("SQL_DB_NAME","db"); 

if(!function_exists('pdoConnect')) { 
    function pdoConnect() { 
     $pdo = new PDO(SERVER_SQL_VERSION.":host=".SQL_SERVER.";dbname=".SQL_DB_NAME."", "".SQL_USERNAME."", "".SQL_PASSWORD.""); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     return $pdo; 
    } 
} 
, 이것이 내가 또한 SERVER_SQL_VERSION을 구분하고, 드라이버를 사용할 수 있는지 확인하는 기능을 추가

... 작동해야합니다 연결에 대한 문제가있을 수 있습니다

... 내가 사용하고// 다른 사람이 postgresql을 사용하려고하면 XAMPP 소프트웨어와 mysql과 sqlite만이 활성화됩니다.

if(!function_exists('check_sql_version')) { 
    function check_sql_version() { 
     $sql_available = false;  //make it false yet 
     foreach(PDO::getAvailableDrivers() as $key => $val) { 
      if(SERVER_SQL_VERSION == $val) 
      { 
       $sql_available = true; 
      } 
     } 
     //check now if sql_available is true or false 
     if($sql_available == true) 
      return true; 
     else 
      return false; 
    } 
} 

은 그래서 샘플이 고려되어야한다 :

if(!check_sql_version()) { 
    echo '('.SERVER_SQL_VERSION.') is not available, you only have this drivers:<br/>'; 
    foreach(PDO::getAvailableDrivers() as $key => $val) { 
     $key = $key + 1; 
     echo $key.') '.$val.'<br/>'; 
    } 
    exit(); //exit and dont proceed 
} 
$stmt = pdoConnect()->prepare("SELECT * FROM accounts"); 
$stmt->execute(); 

나는 그것이 도움이되기를 바랍니다!

관련 문제