Questão nº 58
Questão de Tecnologia da Informação · FCC TJ-MA 2019 (nº 58)
Considere a função abaixo existente em uma classe PHP em condições ideais.
public function inserir($User) {
try {
$conn = new PDO("mysql:host=localhost;dbname=dados", "root", "");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO Usuarios(nome, usuario, senha) VALUES ('$User->Nome',
'$User->Usuario','$User->Senha')";
I;
return 1;
} catch (PDOException $e) {
return $e->getCode();
}
}
Para que a instrução INSERT seja executada corretamente, a indicação I deve ser substituída por:
- A
$conn->exec($sql)(alternativa correta) - B
$stmt = $conn->fetch($sql) - C
$conn.exec($sql) - D
$conn->fetchExec($sql) - E
$stmt = $conn.createStatement($sql)
Resposta comentada
Gabarito Alternativa A
PDO (PHP Data Objects) é uma extensão do PHP que fornece uma interface unificada para acessar bancos de dados. Para enviar comandos SQL que modificam dados (como INSERT, UPDATE, DELETE) e não esperam um conjunto de resultados, usamos um método específico do objeto de conexão.
(A) Correta: $conn->exec($sql) é o método do objeto PDO ($conn) usado para executar comandos SQL que não retornam resultados (como INSERT, UPDATE, DELETE), e ele retorna o número de linhas afetadas.
(B) Incorreta: fetch() é um método de um objeto PDOStatement (o resultado de um prepare() ou query()), usado para buscar linhas de um conjunto de resultados, e não para executar um INSERT diretamente no objeto de conexão. Armadilha: Esta alternativa tenta confundir o aluno com um método de busca de resultados (fetch) que é usado após a execução de consultas SELECT, e não para a execução de comandos de modificação de dados como INSERT.
(C) Incorreta: Em PHP, o operador para acessar membros (propriedades ou métodos) de um objeto é ->, não .. O . é usado para concatenar strings, resultando em um erro de sintaxe aqui.
(D) Incorreta: Não existe um método fetchExec() na classe PDO. É uma combinação inventada de nomes de métodos.
(E) Incorreta: Não existe um método createStatement() na classe PDO. O método para preparar uma instrução SQL (geralmente para consultas parametrizadas) é prepare(), que retorna um PDOStatement.
Fonte: FCC TJ-MA 2019 Técnico Judiciário - Técnico em Informática - Software (Caderno Tipo 1). Reproduzida para fins de estudo.