PHP SQL Server

10/02/2016

Olá amigos do forum, precisando fazer um insert, mas antes o sistema deve verificar se a informação já existe no banco. Esse código está correto ou no caminho?
Estou utilizando o seguinte código para isso:


  $query1 = sqlsrv_num_rows(sqlsrv_query($conn,"select * from carros where placa = '$placa'"));
                if ($query1 == 1) {
                        echo "<script>alert('placa ja existe.');history.back();</script>";

Fernando Dolk

Melhor resposta

13/02/2016

Se for somente isso não seria tão critico a não ser que um select fosse daqueles bem elaborados, aí complicaria um pouco.



kkkk.. gostei do seu senso de humor .. administro um portal com pelo menos 1000 scripts entre site e administrativos, eu iria pedir a conta se tivesse que revisar todas as instruções srsr

William (devwilliam)

Responder Citar

Outras Respostas

10/02/2016

Din

Fernando

Para o seu contesto (lendo o que está escrito) está sim, pois não sei da regra de negocio.

Contudo vai alguns pontos:

1 - Sempre após o nome da tabela utilize
with(nolock)
Pois assim, vc garante ao sqlserver que não vai alocar (travar) a tabela, sempre utilize isso principalmente nos relacionamentos.
2 - Caso seja você que esteja modelando ou modelou o banco, é bom verificar o desempenho das consultas procure por "create index sqlserver" para entender melhor
3 - Você está jogando sua query pura dentro de uma string, isso é perigoso procure por evitar sql injection
3 - Vc utiliza o PHP de forma procedural, sugiro que você procure por CRUD que ajuda e muito nas tarefas de banco, mas também procure por Orientação a Objeto e após isso um framework.
Responder Citar

10/02/2016

Fernando Dolk

É bom rever alguns pontos então, correto?
Responder Citar

10/02/2016

Marcio Araujo

Inclua o PDO.
Responder Citar

10/02/2016

Marcio Araujo

Inclua o PDO.
Responder Citar

10/02/2016

Fernando Dolk

Inclua o PDO.


Sim, incluir com certeza.
Responder Citar

11/02/2016

Din

obrigado por incluir o PDO Marcio havia esquecido.

Fernando, creio que sim, qualquer coisa posta ai no forum, que lhe ajudamos.
Responder Citar

11/02/2016

Marcio Araujo

Disponha.
Me lembrei por conta das discussões recentes no forum.
Responder Citar

11/02/2016

Karine Sobral

Como já foi dito, PDO facilita bastante na possivel mudança de base, correto?
Responder Citar

11/02/2016

Melantonio Currículo

Boa noite,

Altere o select * from carros where placa = '$placa' para:

select 1 from carros where placa = '$placa'

Assim não precisa pegar todos os registros ou todos os campos da tabela.

Abs.
Responder Citar

12/02/2016

Fernando Dolk

Opa, melhorou! Valeu.
Responder Citar

13/02/2016

William (devwilliam)

Como já foi dito, PDO facilita bastante na possivel mudança de base, correto?


karine isso depende muito de como foram escritas suas instruções SQL, principalmente SELECTs, pois existem instruções proprietárias de cada SGBD, veja os exemplos abaixo:

Firebird:
SELECT FIRST 1 * FROM TABELA


MySQL:
SELECT * FROM TABELA LIMIT 1


SQL SERVER:
SELECT TOP 1 * FROM TABELA


Nesse caso mesmo usando PDO vc teria que percorrer todas as instruções e acertar a instrução conforme o banco de dados que está sendo utilizado.
Responder Citar

13/02/2016

Karine Sobral

Se for somente isso não seria tão critico a não ser que um select fosse daqueles bem elaborados, aí complicaria um pouco.
Responder Citar

13/02/2016

Fernando Dolk

Nesse caso William eu colocaria um atestado de 6 meses, kkkkkkkk
Responder Citar

13/02/2016

Karine Sobral

Nessas proporções William, me desculpe, mas não cogitei essa dor de cabeça. kkkkkkkk
Responder Citar

13/02/2016

Fernando Dolk

William, quantas tabelas?
Responder Citar