PDO::execute returnt true maar er wordt niks ge-insert.
Tim van Norde
03/09/2013 20:57:36Hallo,
Ik werk met PDO, wat altijd goed gaat. Nu probeer ik simpelweg een record te inserten in de database maar gebeurt er niks.
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.
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)
1
2
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'], ""));
$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
17/11/2024 14:28:26Frank Nietbelangrijk
03/09/2013 20:59:02tenzij je geen primary key hebt toegewezen aan je tabel misschien
Toevoeging op 03/09/2013 20:59:45:
echo je query eens
Toevoeging op 03/09/2013 20:59:45:
echo je query eens
Erwin H
03/09/2013 23:35:10Als 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.
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
04/09/2013 00:03:52Dat 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!
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!