Heren,
Solved the issue, kinda was a stupid move..
Ik voerde dus een execute uit met een parameter.. Alleen die parameter gaf ik niet door aan de statement. Nadat ik "npc_id" vervangen had voor een '?' werd deze correct uitgevoerd.. Stupid me..
Ik ben bezig met het ontwikkelen van een eigen tekst-based game, en daarvoor heb ik random spawned NPC's.. Nu bieden deze NPC's items aan.
Echter gaat alles goed, afschrijven van geld etcetera. Alleen de onderstaande query word niet uitgevoerd door PDO..
public function sellNpcItems($items, $quantity, $npc_id)
{
try
{
$sql = "UPDATE npc_items SET available = CASE item_id";
for($i=0;$i<count($items);$i++)
{
$sql .= " WHEN ".$items[$i]." THEN available - ".$quantity[$i];
}
$sql .= " ELSE available END WHERE npc_id = ".$npc_id;
$sql = $this->dbh->prepare($sql);
$sql->execute(array($npc_id));
$this->dbh->commit();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
catch(PDOException $e){echo 'Error ! '.$e->getMessage();die();}
}
Toon Meer
Aan de fetchAll kan het niet liggen, deze heb ik er al tussen uit gehad. De query word gewoon niet uitgevoerd. Wanneer ik ook een "print_r" uitvoer op SQL is de output een normale query welke ik kan kopiëren en uit kan voeren op de database zonder enige foutmelding.
Vraag is nu ... Waar gaat het fout, waarom voert PDO het niet uit maar als ik het handmatig doe word het wel uitgevoerd?
Ohja, dit is de output van de SQL parameter wanneer ik een item heb "gekocht".
PDOStatement Object ( [queryString] => UPDATE npc_items SET available = CASE item_id WHEN 57 THEN available - 1 ELSE available END WHERE npc_id = 1 )
Alvast bedankt voor het kijken heren
Kevin.