FC ConcursosFC Concursos

Questão FC373386

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", "");

Desenvolvimento Web

FCC · 2019

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:

  1. $conn->exec($sql)
  2. $stmt = $conn->fetch($sql)
  3. $conn.exec($sql)
  4. $conn->fetchExec($sql)
  5. $stmt = $conn.createStatement($sql)
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

$conn->exec($sql) instrui o objeto PDO armazenado em $conn a executar a string SQL que está em $sql. É a chamada correta quando a instrução não retorna conjunto de resultados (por exemplo, INSERT, UPDATE, DELETE).

O método exec devolve o número de linhas afetadas (um inteiro) ou false em falha. Como o código já configurou PDO::ATTR_ERRMODE para ERRMODE_EXCEPTION, erros lançarão PDOException, que é tratado no bloco try/catch.

Na prática, com a variável $sql contendo a instrução, basta:
$conn->exec($sql);
isso executa o INSERT e permite que o método retorne 1 em caso de sucesso, ou capture o código da exceção em caso de erro.

Para maior segurança contra injeção, prefira prepared statements em implementações reais.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo