Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Eu venho utilizando a função abaixo muito bem com o banco MySQL. Ao utilizá-la no MSSQL 2008, o retorno que tenho do $Acessar->rowCount() é SEMPRE = -1. Como estou validando com if ($Acessar->rowCount() == 1), sempre retorna este valor (-1). Como faço para corrigir este erro que parece ser bobo e utilizá-la com o MSSQL 2008?
function VerificaAcesso($CPF, $Senha){
$pdo = conectar();
try{
$Acessar = $pdo->prepare("SELECT UsuarioCPF, UsuarioSenha FROM Identidade WHERE UsuarioCPF = ? AND UsuarioSenha = ?");
$Acessar->bindValue(1,$CPF, PDO::PARAM_STR);
$Acessar->bindValue(2,md5($Senha), PDO::PARAM_STR);
$Acessar->execute();
print_r($Acessar->rowCount());
if ($Acessar->rowCount() == 1) :
return TRUE;
else :
return FALSE;
endif;
}catch(PDOException $e){
echo $e->getMessage();
}
$con = null;
}Vinicius,
Obrigado pelo direcionamento, mas ainda não consegui resolver. Estou tentando da forma abaixo, mas acho que não está correta.
function VerificaAcesso($CPF, $Senha){
$pdo = conectar();
try{
$Acessar = $pdo->prepare("SELECT UsuarioCPF, UsuarioSenha FROM Identidade WHERE UsuarioCPF = ? AND UsuarioSenha = ?");
$Acessar->bindValue(1,$CPF, PDO::PARAM_STR);
$Acessar->bindValue(2,md5($Senha), PDO::PARAM_STR);
$Acessar->execute();
$linhas = $Acessar->fetchAll();
$linha = count($linhas);
if ($linha == 1) :
return TRUE;
else :
return FALSE;
endif;
}catch(PDOException $e){
echo $e->getMessage();
}
$con = null;
}Alguém sabe informar se isso tem algo haver em estar desenvolvendo em Linux e o ambiente de produção ser em Windows?
tente assim
function VerificaAcesso($CPF, $Senha){
$pdo = conectar();
try{
$Acessar = $pdo->prepare("SELECT UsuarioCPF, UsuarioSenha FROM Identidade WHERE UsuarioCPF = ? AND UsuarioSenha = ?");
$Acessar->bindValue(1,$CPF, PDO::PARAM_STR);
$Acessar->bindValue(2,md5($Senha), PDO::PARAM_STR);
$Acessar->execute();
$linhas = $Acessar->fetchAll(PDO::FETCH_ASSOC);
$linha = rowCount(PDO::FETCH_ASSOC);
if ($linha == 1) :
return TRUE;
else :
return FALSE;
endif;
}catch(PDOException $e){
echo $e->getMessage();
}
$con = null;
}
No manual diz o seguinte:
>
returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.
>
For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement. Instead, use PDO::query() to issue a SELECT COUNT(*) statement with the same predicates as your intended SELECT statement, then use PDOStatement::fetchColumn() to retrieve the number of rows that will be returned. Your application can then perform the correct action.