Jump to content
kamikazzi

Significado de alguns conceitos php e sql

Recommended Posts

Boas,

será que me pode dizer o significa alguns destes "comandos" php?

Spoiler

$resultado = $ligacao->prepare(...);


$resultado->bind_param(...);


$resultado->execute();

 

$professor=$resultadoencontrado->fetch_assoc();

 

Share this post


Link to post
Share on other sites

Citar

$resultado = $ligacao->prepare(...);

Prepara uma Instrução/SQL para execução.

 

Citar

$resultado->bind_param(...);

Liga/Referência um Parâmetro ao nome de uma Variável

ou Constante especifica.

 

Citar

$resultado->execute();

Executa a Instrução/SQL preparada.

 

Citar

$professor=$resultadoencontrado->fetch_assoc();

Retorna um Array indexado pelo nome da coluna da tabela

conforme os resultados da execução.

Share this post


Link to post
Share on other sites

Isso daí é a gramática do PHP para o motor PDO. O outro motor é mysqli, mas esse só serve para o MySQL, enquanto que o PDO pode trabalhar com outro tipo de banco de dados.

 

Para o PHP conectar ao banco de dados, ele precisa de uma conexão, no seu exemplo, ele foi chamado de ligação:

$ligacao=new PDO("mysql:host=localhost;dbname=laravel","root","");

Com a conexão, o PHP usa a gramática do SQL para conversar com o banco de dados:
 

$resultado=$ligacao->prepare("select professor from safados where reputacao = :reputacao");

A gramática do SQL está incompleta, falta definir o parâmetro :reputacao, assim:
 

$resultado->bindParam(':reputacao','o mais safado de todos');

Finalmente, o PHP pede para executar a tarefa:
 

$resultado->execute( );

Para o PHP verificar se o banco de dados executou a tarefa, o PHP pede para que traga os resultados, e guarde na variável $professor:
 

$professor=$resultado->fetch_assoc();

Note que a última linha é diferente da sua, aqui certamente o PHP vai soltar uma mensagem de erro.

Em linguagem acadêmica $ligação é uma instância da classe PDO.

prepare, bindParam, execute, fetch são os métodos da classe PDO.
classe é uma forma avançada de programar. Para incentivar você a estudar classe, tente criar uma classe chamada princesa, onde você define os predicados dela (altura, cor do cabelo,cintura) e o que ela pode fazer (menosprezar, xingar, fazergestosobscenos). É muito difícil, mas assim que você pegar o jeito, vai querer abandonar o PHP e partir para o Laravel.

 

Share this post


Link to post
Share on other sites
4 horas atrás, Frank K Hosaka disse:

É muito difícil, mas assim que você pegar o jeito, vai querer abandonar o PHP e partir para o Laravel.

Laravel nada mais é que um framework que usa o PHP logo a ferramenta tem suas raízes que é o PHP.

Mas sim, não é PHP bruto e simples. Possui suas próprias peculiaridades para usar o PHP.

Não uso e não recomendo o uso de frameworks apesar deles serem de grandiosa utilidade por agilizar conceitos básicos do desenvolvimento.

 

Um framework te prende a ele e somente a ele impedindo e limitando o que pode ser feito apenas usando as sintaxes do simples PHP, fora que com que o utilizador aos poucos perca suas capacidades de desenvolver um software, robusto e leve.

Frameworks são Úteis? Claro que sim.

Frameworks são Inúteis? Claro que sim.

 

Orientação ao objeto não é nada difícil, os tutoriais/aulas que tem por aí que enfiam isso na cabeça de quem está a aprender só para o egocentrismo de dizer: "Orientação é difícil veja como sou expert por te ensinar".

Orientação ao objeto é que torna a programação em PHP muito mais fácil.

Share this post


Link to post
Share on other sites

Eu gosto do Laravel. No princípio eu instalei, sonhando em aprender a linguagem orientada a objetos. Isso é um grande engano. Laravel já é um objeto, restando apenas ao usuário a se limitar a usar as suas propriedades e métodos, mas que eu acho ele fantástico, isso eu acho.

 

A programação orientada a objetos é um tópico novo para mim. Estou começando agora a estudá-lo. Para o meu desespero, o namespace, o define, o spl_autoloader,  nada disso está funcionando comigo. Eu fico perdido com isso. Assim, o máximo que eu aprendi foi usar a herança de classe, aquilo é muito bom! Para chamar um arquivo, eu uso o endereço absoluto, começando com o $_USER['DOCUMENT_ROOT'] pelo PHP ou "../diretorio/arquivo.php" pelo HTML.

No projeto atual, eu inventei o básico.html, que vou incluir em todos os views. O máximo que eu consegui fazer foi definir o CDN do Bootstrap, mas eu fiz a besteira de estilizar o <body>, e só enfrento problemas. Hoje eu pretendo tirar o estilo do <body> do básico.html, para defini-lo em cada página em particular. É assim que eu estudo a programação orientada a objetos, o famoso estilo controles/modelos/visões. Eu desisti de procurar tutoriais, a maior parte deles mexe no .htaccess, e usa o composer para instalar soluções de terceiros. Eu usei um e acabei perdendo o meu direito de acessar a minha pasta astudy, eu fiquei indignado. Ontem eu vi um tutorial de autoload, eu fiquei indignado. O rapaz trabalha tudo no diretório raiz. Eu preciso de um autoload que funciona num ambiente em que os arquivos são distribuidos em pastas, e isso eu não consigo encontrar. Assim, só me resta usar o meu método científico de tentativa e erro.

Ou eu estou procurando no lugar errado?

Share this post


Link to post
Share on other sites

@Frank K Hosaka Sugiro que crie um tópico sobre o assunto, para não desviar esse.

Seu problema me parece ser da configuração do seu PHP, o que requer alguns posts até encontrar qual é o problema mesmo.

 

Faça o download desse projeto meu que nem vou trabalhar mais nele.

 https://github.com/Spell-Master/wesite_pessoal

Em system/config/connections.php configure um banco de dados seu aí.

O banco de dados crie uma tabela e um registro qualquer.

Peque qualquer arquivo dentro de modules existe até um de teste de produção _TESTE_.php

Nele faça a leitura da tabela que você criou:

<?php
$objeto = new Select();
$objeto->query('nome_da_tabela_no_banco_de_dados');

echo "<pre>";
var_dump($objeto->result());

Se configurou corretamente o acesso em connections.php e não há problemas de configuração do seu php verá todos os registros da tabela no banco de dados que você criou.

Note que em nenhum momento o arquivo da classe Select.php e nem a Connect.php foram incluídas ou requeridas elas estão em diretórios distintos, mas uma função usada no projeto o spl_autoload_register fez a mágica acontecer.

 

Se não funcionou com meu projeto, crie um tópico a respeito do problema para que toda comunidade possa ajudar a encontrar uma solução.

Frameworks podem causar anomalias ao usar recursos nativos do PHP ou até conflitar com eles, normalmente eles para funcionar desativam ou ativam aplicações do PHP alterando sua configuração padrão.

Também temos o lado da versão do PHP, enfim são várias questões a serem abordadas.

Share this post


Link to post
Share on other sites
Em 28/11/2023 at 20:04, Omar~ disse:

Laravel nada mais é que um framework que usa o PHP logo a ferramenta tem suas raízes que é o PHP.

Mas sim, não é PHP bruto e simples. Possui suas próprias peculiaridades para usar o PHP.

Não uso e não recomendo o uso de frameworks apesar deles serem de grandiosa utilidade por agilizar conceitos básicos do desenvolvimento.

 

Um framework te prende a ele e somente a ele impedindo e limitando o que pode ser feito apenas usando as sintaxes do simples PHP, fora que com que o utilizador aos poucos perca suas capacidades de desenvolver um software, robusto e leve.

Frameworks são Úteis? Claro que sim.

Frameworks são Inúteis? Claro que sim.

 

Orientação ao objeto não é nada difícil, os tutoriais/aulas que tem por aí que enfiam isso na cabeça de quem está a aprender só para o egocentrismo de dizer: "Orientação é difícil veja como sou expert por te ensinar".

Orientação ao objeto é que torna a programação em PHP muito mais fácil.


 

Laravel é amplamente reconhecido como um framework robusto no ecossistema do PHP, introduzindo uma estrutura mais rica e elaborada que transcende as capacidades do PHP puro. Essa complexidade, contudo, não deve ser interpretada meramente como uma sobreposição ao PHP, mas como uma abordagem meticulosamente projetada para amplificar as potencialidades do desenvolvimento web.

 

Embora seja verdade que ao adotar um framework como o Laravel, nos comprometemos com determinadas convenções e estruturas predefinidas, essa percepção de limitação é mitigada significativamente quando se integra o conhecimento e as práticas do Domain-Driven Design (DDD). O DDD oferece uma perspectiva que valoriza a modelagem do domínio de negócio, o que, por sua vez, promove uma abordagem mais flexível e adaptativa no desenvolvimento de software. Portanto, o compromisso com as convenções do Laravel pode ser visto não como uma restrição, mas como uma fundação sobre a qual soluções personalizadas e orientadas ao domínio podem ser construídas de forma eficaz.

 

A escolha entre utilizar um framework como o Laravel ou optar pelo PHP puro não é uma questão de certo ou errado, mas sim uma decisão que deve ser alinhada às necessidades específicas de um projeto e à familiaridade do desenvolvedor com as ferramentas disponíveis. Enquanto alguns desenvolvedores apreciam a liberdade e a flexibilidade oferecidas pelo PHP puro, outros valorizam a eficiência, a estrutura e as facilidades que um framework como o Laravel pode oferecer.

 

No que se refere à orientação a objetos, é crucial reconhecer que, apesar de existir uma curva de aprendizado, ela constitui uma abordagem poderosa que proporciona maior clareza, reusabilidade e facilidade de manutenção na programação em PHP. As críticas relacionadas à complexidade da orientação a objetos geralmente surgem de experiências de aprendizado mal direcionadas e não refletem a realidade prática, onde essa abordagem aprimora a gestão de projetos de software complexos e colaborativos.

 

Conclusão, tanto o uso de frameworks como o Laravel quanto a programação em PHP puro apresentam seus próprios méritos e desafios. A decisão entre um e outro deve ser embasada no contexto do projeto, nos requisitos específicos e na experiência do desenvolvedor ou da equipe envolvida. Igualmente, a orientação a objetos, quando compreendida e implementada adequadamente, pode se tornar um recurso inestimável para aumentar a qualidade e a eficiência no desenvolvimento de software.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
    • By ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • By gersonab
      Como faço para destruir uma session quando a modal for fechada, esta foi criada na mesma.
       
      Favor desconsiderar esta, estava com problema de cache
       
    • By ThalissonChagas1407
      Boa tarde.
      Eu tenho o seguinte objeto em arrray
      Array ( [0] => stdClass Object ( [produto] => 000001 [var1] => LR [var2] => G [var3] => [codproduto] => 000001LRG [estoque] => 4.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [1] => stdClass Object ( [produto] => 000001 [var1] => AZ [var2] => G [var3] => [codproduto] => 000001AZG [estoque] => -4.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [2] => stdClass Object ( [produto] => 000001 [var1] => VD [var2] => G [var3] => [codproduto] => 000001VDG [estoque] => 0.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [3] => stdClass Object ( [produto] => 000001 [var1] => BR [var2] => G [var3] => [codproduto] => 000001BRG [estoque] => 17.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [4] => stdClass Object ( [produto] => 000001 [var1] => VR [var2] => G [var3] => [codproduto] => 000001VRG [estoque] => 0.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [5] => stdClass Object ( [produto] => 000001 [var1] => PT [var2] => G [var3] => [codproduto] => 000001PTG [estoque] => 5.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [6] => stdClass Object ( [produto] => 000001 [var1] => AM [var2] => G [var3] => [codproduto] => 000001AMG [estoque] => 1077.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [7] => stdClass Object ( [produto] => 000001 [var1] => BR [var2] => M [var3] => [codproduto] => 000001BRM [estoque] => 17.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [8] => stdClass Object ( [produto] => 000001 [var1] => AZ [var2] => M [var3] => [codproduto] => 000001AZM [estoque] => 15.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [9] => stdClass Object ( [produto] => 000001 [var1] => PT [var2] => M [var3] => [codproduto] => 000001PTM [estoque] => 5.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) [10] => stdClass Object ( [produto] => 000001 [var1] => AM [var2] => M [var3] => [codproduto] => 000001AMM [estoque] => 22.0000 [codigo] => 000001 [descricao] => Produto de teste [categoria] => [unidade] => UN [custo] => 0.5400 [fornecedor] => 4 [sigla] => [catdesc] => ) ) Gostaria de agrupar o produto e a var1;
       
      o Resultado dessa forma.
       
      Array ( [000001] => Array ( [LR] => Array ( [P] => 4 [M] => 3 [G] => 2 ) [PT] => Array ( [P] => 4 [M] => 3 [G] => 2 ) ) ) seria possivel agrupar?
    • By gersonab
      Boa tarde a todos, gostaria de aplicar uma classe a uma determinada informação, não estou conseguindo, busco no BD a hora do cadastro, faço a diferença com a hora atual, até aí trq, só não consigo aplicar a classe.
      <?php $horapf = $linha['horapf']; $horaatual = date("H:i:s"); $entrada = DateTime::createFromFormat('H:i:s', $horapf); $saida = DateTime::createFromFormat('H:i:s', $horaatual); $maisq = '00:30:00'; $menosq = '00:40:00'; $intervalo = $entrada->diff($saida); $intervalo->format('%H:%I:%S'); if($maisq <= $intervalo && $intervalo < $menosq){ $clss = 'class="btn btn-xs btn-outline-warning"'; } elseif ($intervalo >= $menosq){ $clss = 'class="btn btn-xs btn-outline-danger"'; } else { $clss = 'class="btn btn-xs btn-outline-info"'; } mesmo se retirar esta linha ----->  $intervalo->format('%H:%I:%S');
       
      para sempre no primeiro, independente do tempo btn-outline-warning
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.