PDO - dodawanie rekordów do bazy danych

Odpowiedz Nowy wątek
2013-05-23 20:38
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();
}
?>

Pozostało 580 znaków

2013-05-23 22:08
0

Binduj same parametry - bez przecinków.

Pozostało 580 znaków

2013-05-23 22:52
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

edytowany 5x, ostatnio: hagop, 2013-05-23 23:03

Pozostało 580 znaków

2013-05-28 14:10
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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