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:
- $conn->exec($sql)
- $stmt = $conn->fetch($sql)
- $conn.exec($sql)
- $conn->fetchExec($sql)
- $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