PDO BindValue PDO

0

Witam, chciałbym się dowiedzieć, na czym polega błąd z którym walczę od godziny.

Próbuje dodać rekord bo prostej tabeli w bazie danych, wykorzystując funkcje prepare i bindValue. Problem w tym, iż przy próbie dodanie otrzymuje błąd:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\xampp\htdocs\ZAPI\Lab4\my_class\UzytkownikDB\uzytkownik.php:40 Stack trace: #0 C:\xampp\htdocs\ZAPI\Lab4\my_class\UzytkownikDB\uzytkownik.php(40): PDOStatement->execute() #1 C:\xampp\htdocs\ZAPI\Lab4\index1.php(38): UzytkownikDB\Uzytkownik->__construct('test', 'test', '75050406054', 'test') #2 {main} thrown in C:\xampp\htdocs\ZAPI\Lab4\my_class\UzytkownikDB\uzytkownik.php on line 40

Oto fragment kodu który odpowiada za utworzenie nowego obiektu, sprawdzenie, czy istnieje rekord z takim peselem w bazie danych, jeśli nie to dodaje.

public function __construct($imie, $nazwisko, $pesel, $firma)
    {
        parent::__construct($imie, $nazwisko);

        $this->pesel = $pesel;
        $this->firma = $firma;
		$pdo = SQL_connect::connect();
		try
		{
			
			$stmt = $pdo -> prepare('SELECT * FROM `naukowcy` WHERE Pesel= :pesel');
		
			$liczba = 0;
			$stmt -> bindValue(':pesel', $pesel, PDO::PARAM_STR); 
			$stmt -> execute(); 
			$liczba=$stmt->fetchColumn();

			if($liczba > 0)
			{
				echo 'Naukowiec znajduje sie juz w bazie dancyh.<br>';
			}
			else
			{
				$stmt = $pdo -> prepare("INSERT INTO `naukowcy`(`Imie`, `Nazwisko`, `Pesel`, `Nazwa_firmy`) VALUES (:Imie,:Nazwisko,:Pesel,:Nazwa_firmy)");
				$liczba=0;
				$pesel=$pesel+"";
				$stmt->bindValue(':Imie',$imie,PDO::PARAM_STR);
				$stmt->bindValue(':Nawisko',$nazwisko,PDO::PARAM_STR);
				$stmt->bindValue(':Pesel',$pesel,PDO::PARAM_STR);
				$stmt->bindValue(':Nazwa_firmy',$firma,PDO::PARAM_STR);
				$liczba += $stmt -> execute(); 
				if($liczba>0)
				{
					echo 'Dodano nowego naukowca do bazy danych.<br>';
				}
				else
				{
					echo 'Nie udalo sie dodac nowego naukowca.<br>';
				}
			}
		}
		catch(PDOException $e)
		{
			echo 'Wystąpił błąd biblioteki PDO: ' . $e->getMessage();
		}	

    }


Jak zmodyfikowałem tą linijke: $stmt = $pdo -> prepare("INSERT INTO naukowcy(Imie, Nazwisko, Pesel, Nazwa_firmy) VALUES (:Imie,:Nazwisko,:Pesel,:Nazwa_firmy)"); na: $stmt = $pdo -> prepare("INSERT INTO naukowcy(Imie, Nazwisko, Pesel, Nazwa_firmy) VALUES (':Imie',':Nazwisko',':Pesel',':Nazwa_firmy')");

Dodało mi rekord do bazy danych który wyglądał tak:
[:Imie],[:Nazwisko],[:Pesel],[:Nazwa_firmy]. Tak jak by nie podmieniło tych parametrów, pomimo, iż one są przekazywane poprawinie (sprawdzałem).

1

Nazwisko
Nawisko

:)

a dokładnie tutaj:
user image

1 użytkowników online, w tym zalogowanych: 0, gości: 1