Witam wszystkich. Jestem początkujący. Korzystając z przykładów z książki J. Ducketta próbuję stworzyć program oparty na bazie danych. Podczas pobierania z bazy otrzymuję komunikat błędu, z którym walczę bezskutecznie do dłuższego czasu. Oto komunikat:
> SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Poniżej wybrane element kodu:
<?php
$typ = 'mysql';
$serwer = 'localhost';
$db = '*********';
$port = '3306';
$kodowanie = 'utf8mb4';
$uzytkownik = 'root';
$haslo = '';
$dsn = "$typ:host=$serwer;dbname=$db;port=$port;charset=$kodowanie";
class BazaI extends PDO
{
public function __construct(string $dsn, string $uzytkownik, string $haslo)
{
parent::__construct($dsn, $uzytkownik, $haslo, $opcje);
}
public function wykonajSQL(string $sql, array $argumenty = null)
{
if (!$argumenty) {
return $this->query($sql);
}
$instrukcja = $this->prepare($sql);
$instrukcja->execute($argumenty);
return $instrukcja;
}
}
class CMS
{
protected $pytajacy = null;
public function __construct($dsn, $uzytkownik, $haslo)
{
$this->db = new BazaI($dsn, $uzytkownik, $haslo);
}
public function pobierzPytajacego()
{
if ($this->pytajacy === null) {
$this->pytajacy = new Pytajacy($this->db);
}
return $this->pytajacy;
}
public function pobierzIdPytajacego(array $email)
{
$sql = "SELECT id_pytajacego
FROM pytajacy
WHERE e_mail = ':e-mail';";
return $this->db->wykonajSQL($sql, $email);
}
}
$email = ['e-mail' => 'ggg@op.hs'] ;
$czesc['id_pytajacego'] = $cms->pobierzPytajacego()->pobierzIdPytajacego($email)->fetch();
Tablica $email jest stworzona pierwszy raz, w miejscu w którym widać i ma tylko 1 parę elementów.
Bardzo proszę o pomoc