PDO::execute returnt true maar er wordt niks ge-insert.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim van Norde

Tim van Norde

03/09/2013 20:57:36
Quote Anchor link
Hallo,

Ik werk met PDO, wat altijd goed gaat. Nu probeer ik simpelweg een record te inserten in de database maar gebeurt er niks.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$query = $this->dbh->prepare("INSERT INTO " . $this->pf . "menu (title,published,position,order,menu) VALUES(?, ?, ?, ?, ?)");
$query->execute(array($_POST['title'], $_POST['published'], $_POST['position'], $_POST['order'], ""));


Ik check of de variabelen bestaan, $this->pf is de prefix voor de database.
Ik echo er onder wat debug info. Execute returnt true, maar PDO->lastInsertId() returnt altijd 0, dus er wordt niks toegevoegd.
 
PHP hulp

PHP hulp

08/05/2024 18:48:31
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/09/2013 20:59:02
Quote Anchor link
tenzij je geen primary key hebt toegewezen aan je tabel misschien

Toevoeging op 03/09/2013 20:59:45:

echo je query eens
 
Erwin H

Erwin H

03/09/2013 23:35:10
Quote Anchor link
Als execute true teruggeeft betekent dat dat je query gelukt is. Bij een simpele insert query betekent dat ook dat er zeer waarschijnlijk een record is ingevoegd. Wat er mogelijk fout is is dat je geen auto increment hebt ingesteld (wat Frank waarschijnlijk bedoelt met primary key). Zonder auto increment zal lastInsertId geen waarde teruggeven.
Een andere optie is nog dat je lastInsertId niet direct na het uitvoeren van execute aanroept, maar dat er nog andere database acties tussen zitten.
 
Tim van Norde

Tim van Norde

04/09/2013 00:03:52
Quote Anchor link
Dat was het probleem niet.
Ik kijk voor de test even of ik 'order' wel kan gebruiken als veldnaam, omdat je ook ook in SQL kan gebruiken. Dat mag dus niet.

Opgelost. Bedankt voor het meedenken!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.