Försök med:
$stmt = $this->db->prepare("INSERT INTO " . $this->db->prod('artNr','show_in_catalog','published') . " VALUES(?,?,?)");
...
Och din prod-metod i db returnerar väl ett tabellnamn också, och inte bara fältnamnen?
2 svar · 460 visningar · startad av colione
Jag kör följande kodsnutt för att kasta in en produkt i databasen, dock så läggs inget in när den körs. $this->db innehåller ett PDO-anslutning skapat från en klass jag har använt förut och det har funkat utan problem. $this->db->prod innehåller strängen products.
Jag har även provat att kasta in kolon innan namnen i arrayen. Har även provat bindParam. Men inget sätts in. Vad är det jag missat?
Jag har satt felen till exceptions samt provat att innesluta allt i try/catch utan att fånga något.
DBMS är mysql
public function createProduct(Product $product) {
$stmt = $this->db->prepare("INSERT INTO $this->db->prod(`artNr`,`show_in_catalog`,`published`) VALUES(:art,:show,:pub)");
$bindArr = array("art"=>$product->art,"show"=>$product->show,"pub"=>$product->pub);
$stmt->execute($bindArr);
}
Försök med:
$stmt = $this->db->prepare("INSERT INTO " . $this->db->prod('artNr','show_in_catalog','published') . " VALUES(?,?,?)");
...
Och din prod-metod i db returnerar väl ett tabellnamn också, och inte bara fältnamnen?
Det hela visade sig vara en bugg i pdo, vilket ledde till att prepare helt enkelt gjorde att php slutade exekvera utan några som helst varningar elle liknande.