PDO - dodawanie rekordów do bazy danych

0

Witam.
Napisałem skrypt mający na celu dodawanie nowego rekordu do bazy danych. Podczas wykonywania skryptu otrzymuje komunikaty błędu.

( ! ) SCREAM: Error suppression ignored for
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\wamp\www\serwis\wmbus8.php on line 140
( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\serwis\wmbus8.php on line 140

Linijka 140 to $stmt -> execute();. W innych skryptach dodających rekordy do bazy danych ten sam błąd (wszystkie mają podobną strukturę). Tabela, do której dodaje rekordy (w tym przypadku) ma więcej kolumn niż wypisane w skrypcie. Są to kolumny UID z autoinkrementacją oraz data (timestamp). W innym skrypcie, który ma pobierać dane z pliku csv i wstawiać je do 3 kolumn z 10 (pozostałe mają być uzupełniane z innego skryptu) wywala ten sam błąd. Co robię źle?

 
if(isset($_POST['dodaj'])) {
$stmt = $pdo -> prepare('INSERT INTO `wmbus8` (`ID`, `naprawiono`, `serwisant`, `pracownik`, `uszkodzenie_pracownika` , `kontaktron`, `wylamany_ekement`, `zwarcie`, `zwarcie_radio`, `wior`, `atmega`, `blad_programowania`, `kwarc32k`, `kwarc19m`, `uszkodzony_det`, `rc_det`, `adf`, `komentarz`)
	VALUES(
			:ID,
			:naprawiono,
			:serwisant,
			:pracownik,
			:uszkodzenie_pracownika,
			:kontaktron,
			:wylamany_elemet,
			:zwarcie,
			:zwarcie_radio,
			:wior,
			:atmega,
			:blad_programowania,
			:kwarc32k,
			:kwarc19m,
			:uszkodzony_det,
			:rc_det,
			:adf,
			:komentarz,');
 
			$stmt -> bindValue(':ID,', $_POST['ID'], PDO::PARAM_INT);
			$stmt -> bindValue(':naprawiono,', $_POST['naprawiono'], PDO::PARAM_STR);
			$stmt -> bindValue(':serwisant,', $_SESSION['logged_in'], PDO::PARAM_STR);
			$stmt -> bindValue(':pracownik,', $_POST['pracownik'], PDO::PARAM_STR);
			$stmt -> bindValue(':uszkodzenie_pracownika,', $_POST['uszkodzenie_pracownika'], PDO::PARAM_INT);
			$stmt -> bindValue(':kontaktron,', $_POST['kontaktron'], PDO::PARAM_INT);
			$stmt -> bindValue(':wylamany_elemet,', $_POST['wylamany_element'], PDO::PARAM_INT);
			$stmt -> bindValue(':zwarcie,', $_POST['zwarcie'], PDO::PARAM_INT);
			$stmt -> bindValue(':zwarcie_radio,', $_POST['zwarcie_radio'], PDO::PARAM_INT);
			$stmt -> bindValue(':wior,', $_POST['wior'], PDO::PARAM_INT);
			$stmt -> bindValue(':atmega,', $_POST['atmega'], PDO::PARAM_INT);
			$stmt -> bindValue(':blad_programowania,', $_POST['blad_programowania'], PDO::PARAM_INT);
			$stmt -> bindValue(':kwarc32k,', $_POST['kwarc32k'], PDO::PARAM_INT);
			$stmt -> bindValue(':kwarc19m,', $_POST['kwarc19m'], PDO::PARAM_INT);
			$stmt -> bindValue(':uszkodzony_det,', $_POST['uszkodzony_det'], PDO::PARAM_INT);
			$stmt -> bindValue(':rc_det,', $_POST['rc_det'], PDO::PARAM_INT);
			$stmt -> bindValue(':adf,', $_POST['adf'], PDO::PARAM_INT);
			$stmt -> bindValue(':komentarz', $_POST['komentarz'], PDO::PARAM_STR);
			$stmt -> execute();
}
?>
0

Binduj same parametry - bez przecinków.

0

bindowanie bez przecinków błąd składni sql.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 20' in C:\wamp\www\serwis\wmbus8.php on line 140

Udało się szukając błędu w składni SQL znalazłem brak nawiasu zamykającego tworzenie aliasów. Tylko dlaczego nie podświetliło mi błędu od razu w kodzie...
Dzięki za pomoc

0

Ja tam nadal widzę błąd w zapytaniu :komentarz,');

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