Estou querendo salvar no banco de dados um link (https://site.com.br) e quero utilizar PDO para isso.
Mas pensei na hipótese do prepare barrar alguns caracteres, como, "/" (barra), ":" (dois pontos), etc...
Alguém saberia me responder se o prepare barraria esses caracteres de links? Pois sei que ele faz uma filtragem na query para evitar ataques, mas não sei exatamente quais caracteres ele filtra.
estou começando meus estudo em PHPOO, e estou fazendo um CRUD. Mas quando tento dar um insert no banco acusa erro no prepre e não consigo resolver este problema. Alguém poderia me ajudar?
classe de conexao: Banco.php
<?php
class Banco
{
private $dns = 'mysql:host=localhost;dbname=alunos';
private $user = 'root';
private $pass = 'vertrigo';
public $pdo;
public function __construct()
{
$this->conecta();
}
public function conecta()
{
try {
$this->pdo = new PDO($this->dns, $this->user, $this->pass);
} catch (PDOException $e) {
die('Erro ao conectar com a base de dados: ' . $e->getMessage());
}
return $this->pdo;
}
}
classe de INSERT no banco (extends Aluno): Cadastrar.php:
<?php
require_once '../lib/Banco.php';
require_once 'Aluno.php';
class Cadastrar extends Aluno
{
protected $aluno;
public function __construct($aluno)
{
$this->aluno = new Aluno($aluno);
$this->insert();
}
public function insert()
{
$pdo = new Banco();
$insert = "INSERT INTO alunos(nome, nota1, nota2, nota3, nota4)
VALUES(:nome, :nota1, :nota2, :nota3, :nota4)";
$stmt = $pdo->prepare($insert);
$stmt->bindValue(':nome', $this->aluno['nomeAluno']);
$stmt->bindValue(':nota1', $this->aluno['nota1']);
$stmt->bindValue(':nota2', $this->aluno['nota2']);
$stmt->bindValue(':nota3', $this->aluno['nota3']);
$stmt->bindValue(':nota4', $this->aluno['nota4']);
if ($stmt->execute()) {
header('Location: ../index.php');
} else {
die('Erro ao cadastrar aluno');
}
}
}
$cadastrar = new Cadastrar($_POST);
classe de Aluno: Aluno.php
<?php
class Aluno
{
protected $nome;
protected $media;
protected $n1, $n2, $n3, $n4;
public function __construct($dados)
{
$this->nome = $dados['nomeAluno'];
$this->n1 = $dados['nota1'];
$this->n2 = $dados['nota2'];
$this->n3 = $dados['nota3'];
$this->n4 = $dados['nota4'];
}
public function getNome()
{
return $this->nome;
}
public function getN1()
{
return $this->n1;
}
public function getN2()
{
return $this->n2;
}
public function getN3()
{
return $this->n3;
}
public function getN4()
{
return $this->n4;
}
}
O erro que apresenta quando tento o cadastro é:
Fatal error: Call to undefined method Banco::prepare() in C:\Program Files\VertrigoServ\www\Projetos\ListaExercicios\Atividade_12\core\Cadastrar.php on line 21
Não sei onde estou errando, alguém poderia me ajudar?