last day (15 days later) » 

12:06
3
Q: sqlsrv_num_rows não funciona [PHP + SQL]

MariaTenho um site que ta sendo feito com PHP + SQL SERVER, e para efetuar o login precisa do código do cliente, e ele coloca lá só que sempre diz que está incorreto, sendo que está correto. Aparentemente o sqlsrv_num_rows nao ta funcionando, pq eu coloco o login correto e nao entra no site que eu fi...

Já tentou imprimir a primeira linha para ver se o SQL volta mesmo um resultado?
Coloquei pra imprimir o $stmt e a resposta foi Resource id #6
Faz assim para exibir os resultados: $stmt = sqlsrv_prepare($conn, $sql); $result = sqlsrv_execute($stmt); $row = sqlsrv_fetch_array($result); print_r($row);
Deu esse erro: Warning: sqlsrv_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\web\teste.php on line 37 Código do Montador ou senha incorretos. Tente novamente!
E utilizando o seu $stmt? adicionando abaixo da linha do $row_count o seguinte: $row = sqlsrv_fetch_array($stmt); print_r($row);
12:06
Agora imprimiu o que eu pedi no SELECT e troquei o if ($row_count > 0 ){... por if ($row > 0 ) e funcionou!!! Muito obrigada!!!
acho que você não deve utilizar o $row>0, no mínimo deveria utilizar um count($row)>0. Mas creio que ainda não chegamos a um resultado correto.
Coloquei o count($row)>0 e funciona direitinho. Pq diz que n chegamos a um resultado correto?
Maria, bom dia! o que fizemos é meio que um workaround do que a função sqlsrv_num_rows() faz! Mas meio limitado, pq pegamos apenas a primeira linha!
O correto seria utilizarmos mesmo a função sqlsrv_num_rows(), temos que analisar o pq ela não está funcionando
ah, sim. agora entendi
quando utilizo sqlsrv_num_rows() é como se nao viesse retorno
pq mesmo com um login que eu sei que nao tem no db, ele nao entra
o código ta assim agr `$stmt = sqlsrv_query($conn, $sql);
$row_count = sqlsrv_num_rows($stmt);
$row = sqlsrv_fetch_array($stmt);
print_r($row);``
mas ai eu pego o $row pra colocar no if
A linha do $row_count não é mais necessária, a linha do print_r() é dispensável tb! Ok?
12:12
certo
To achando que podemos testar o sqlsrv_execute() ao invés de utilizar o sqlsrv_query(). Entendeu?
$stmt = sqlsrv_prepare($conn, $sql);
$result = sqlsrv_execute($stmt);
echo $row_count = sqlsrv_num_rows($result);
esse!
deu erro
Warning: sqlsrv_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\web-montador\teste.php on line 39
Código do Montador ou senha incorretos. Tente novamente!
$stmt = sqlsrv_prepare($conn, $sql);
echo $row_count = sqlsrv_num_rows($stmt);
assim funciona?
fica dando login incorreto
sendo que tem no db
Bem... enfim, não tenho como fazer testes aqui, meu ambiente não está preparado para isso. Você pode utilizar o count($row) que fizemos, mas o mais correto seria utilizar o sqlsrv_num_rows(), ok?
12:28
Ok! mto obrigada pela ajuda. Vou deixar com o count($row) mas vou pesquisar mais pra ver se resolvo o problema
obrigada mesmo
Talvez uma pesquisa e um estudo mais aprofundado do SQLSRV seria legal!
Só mais uma coisa, tente utilizar o PDO nas futuras conexões com BD! Ele é bem melhor e tem várias vantagens! php.net/manual/pt_BR/class.pdo.php
Por nada! Sucesso!
certo
obrigada!!! tudo em dobro

last day (15 days later) »