Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
falae galera... blz???
venho aki pra trazer mais um problema pra vcs me ajudarem a resolver, pq o negocio tah tenso...rs
o negócio eh o seguinte...
eu tenho o msmo banco de dados com os msmos dados inseridos nas tabelas... TUDO IDÊNTICO .. no MySql.. no PostgreSQL... e no bendito SQLServer 2012...
mas somente no SQL Server eu não consigo selecionar os dados... estou usando a mesma classe pra buscar os dados nos 3 bancos de dados...
mas só no SQLServer 2012 eh q não traz nada... =/
verifiquei todos os serviços... estão todos iniciados...
pelo SQL Management Studio eu consigo fazer tudo no banco... conectar com o msmo usuário q tento conectar e fazer tudo... tras os resultados certinhos... mas pela aplicação não traz nada...
segue minha classe de conexão:
class ConnectionDB{ //dados da conexão private $db_name; private $db_host; private $db_user; private $db_pass; private $db_port; private $db_domain; private $connectionStatus; private $databaseType; private $linkPDO; private $result; private $queryExecured; private $lastInsertId; private $numRowsResult; //Parameters of function QueryExecured() const QUERY_STATE = 'qse'; const QUERY_STRING = 'qsg'; //Database Types avaliable const DBT_MYSQL = "mysql"; const DBT_MSSQL_2008 = "sqlserver08"; const DBT_MSSQL_2012 = "sqlserver12"; const DBT_PGSQL = "postgreesql"; const DBT_ORACL = "oracle"; public function __construct() { $this->db_name = ""; $this->db_host = ""; $this->db_user = ""; $this->db_pass = ""; $this->db_port = ""; $this->db_domain = ""; $this->connectionStatus = false; $this->databaseType = self::DBT_MSSQL_2012; $this->result = array(); $this->queryExecured = array(); $this->lastInsertId = 0; $this->numRowsResult = 0; try { $this->Connect(); } catch(PDOException $ex) { throw $ex; } } public function Connect() { switch($this->databaseType) { case self::DBT_MYSQL: $this->linkPDO = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);break; case self::DBT_MSSQL_2012: $this->linkPDO = new PDO("sqlsrv:server=$this->db_host;Database=$this->db_name", $this->db_user, $this->db_pass);break; case self::DBT_MSSQL_2008: $this->linkPDO = new PDO("mssql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);break; case self::DBT_ORACL: $this->linkPDO = new PDO();break; case self::DBT_PGSQL: $this->linkPDO = new PDO("pgsql:host=$this->db_host dbname=$this->db_name", $this->db_user, $this->db_pass);break; } if(is_object($this->linkPDO) && get_class($this->linkPDO) == "PDO") { $this->connectionStatus = true; $this->linkPDO->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); $this->linkPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } } public function GetDatabaseName() { return $this->db_name; } public function GetConnectionStatus() { return $this->connectionStatus; } public function GetLastInsertId() { return $this->lastInsertId; } public function StartTransaction() { try { $this->linkPDO->beginTransaction(); } catch(PDOException $ex) { throw $ex; } } public function Commit() { try { $this->linkPDO->commit(); } catch(PDOException $ex) { throw $ex; } } public function Rollback() { try { $this->linkPDO->rollBack(); } catch(PDOException $ex) { throw $ex; } } public function Query($sql) { try { $stmt = $this->linkPDO->prepare($sql); $this->queryExecured[self::QUERY_STATE] = $stmt->execute(); $this->queryExecured[self::QUERY_STRING] = $sql; if (is_object($stmt->fetchObject()) && $stmt->rowCount() > 0) { while($resultado = $stmt->fetchObject()) { $this->result[] = $resultado; } } $this->numRowsResult = $stmt->rowCount(); $this->lastInsertId = $this->linkPDO->lastInsertId(); } catch(PDOException $ex) { throw $ex; } } public function GetResult() { return $this->result; } public function QueryExecuted($param) { return $this->queryExecured[$param]; }}
ninguém sabe o q pode ser???
eh o q eu falei acima, brother... parece q a conexão eh efetuada... pq eu cheguei a fazer teste de mudar o nome do banco de dados na string de conexão... e deu erro... quando coloco o nome correto, ele só não retorna nada...
quanto ao drive, tah ativo sim...
agora estou no trabalho... qdo eu chegar em casa eu posto uma screen da index do WampServer..
será q pode ser algum problema de permissão de leitura e escrita no banco do usuario q eu criei??
tem algum lugar q eu possa modificar isso?
e é como eu falei... erro da classe parece q não é, pq com os outros bancos de dados cm falei(MySql e PostgreSQL) retorna os resultados corretamente... e tah IDENTICO os dados nos 3 bancos... tanto estrutura, cm os dados em si..
mas eu vou tentar pelo PDO direto pra ver se retorna os resultados assim msmo.. não custa tentar...
aproveito e qdo for postar as screens, eu falo se deu certo ou não...
vlw..
tentou conectar com servidor\instancia?
a unica diferença q tem é em todos esta host e no mssql2012 esta server.
case self::DBT_MYSQL: $this->linkPDO = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);break;
case self::DBT_MSSQL_2012: $this->linkPDO = new PDO("sqlsrv:server=$this->db_host;Database=$this->db_name", $this->db_user, $this->db_pass);break;pois é, shini... foi exatamente o q eu fiz... e foi como eu falei... parece q a conexão foi efetuada com sucesso, entendeu... mas os dados não retornam de jeito nenhum pela aplicação... e fazendo a mesma Query pelo Sql management Studio, conectado com o mesmo usuario, retorna os dados.. quando eu falo que alguns problemas bizarros só acontecem comigo, ninguém acredita..¬¬.... huahuahua
imagem da config do meu WampServer:
http://imageshack.us/f/248/semttulomxy.png/
testei direto e aconteceu o msmo problema, shini...
verifique o retorno de rowCount(), segundo o manual não funciona 100% em alguns bancos.
if (is_object($stmt->fetchObject()) && $stmt->rowCount() > 0)
pqp.... PHP e seus bugs...¬¬............................. cara... mto obrigado msmoooooo... tu eh foda... \o/
era isso msmo... JAMAIS eu iria pensar q era isso...
vlw mesmo...
o mais tenso eh saber q não funciona so mssql 2012
haha.... eu tentei conectar ao SQLServer 2008 e deu problema... agora q eu resolvi esse... vou tentar conectar ao 2008 novamente... se der, aviso aki... mas jah arrumei outro jeito de contar as linhas do retorno da query...rs
dps posto se consegui ou não...
pra quem tiver o msmo problema que eu.... essa função ($stmt->rowCount()) só retorna algo quando é INSERT, UPDATE e DELETE... quando eh SELECT retorna "-1"... vai entender... huahuauha
ja tentou conectar pelo pdo direito?
o driver esta ativo no php.ini?