Tjena,
Har en function som returnerar en array med bilder inkl. taggar, som ser ut såhär:
function GetImages($dbh = null, $Ids = ""){
try {
$query = "SELECT "
."a.`imageId`, a.`imageParent`, a.`imageName`, a.`imageWidth`, a.`imageHeight`, a.`imageSize`, a.`imageCreated`, a.`imageCaption`, a.`imagePublished`, "
."b.`tagId`, b.`tagX`, b.`tagY`, b.`tagBrand` "
."FROM images a "
."INNER JOIN tags b "
."ON a.imageId = b.tagParent "
."WHERE a.imageId IN(:Images) "
."ORDER BY a.imageId ASC, b.tagId ASC";
$pst = $dbh->prepare($query);
$pst->bindParam(":Images", $Ids, PDO::PARAM_STR);
$pst->execute();
$Imgs = array();
while($res = $pst->fetch(PDO::FETCH_ASSOC)){
$Imgs[$res['imageId']] = array(
"id" => $res['imageId'],
"name" => $res['imageName'],
"width" => $res['imageWidth'],
"height" => $res['imageHeight'],
"caption" => $res['imageHeight'],
);
$Imgs[$res['imageId']]['tags'][] = array(
"x" => (($res['tagX'] / $res['imageWidth']) * 100),
"y" => (($res['tagY'] / $res['imageHeight']) * 100),
"msg" => $res['tagBrand']
);
}
return $Imgs;
$res = null;
} catch(PDOException $e){
return $e->getMessage();
}
}
Använder funktion såhär:
$Ids = implode(",", $_POST['imgId']);
$Test = GetImages($dbh, $Ids);
Problemet är att array'en jag får tillbaka innehåller bara först raden i tabellen. Kör jag frågan separat direkt mot MySQL får jag 7 rader precis som det ska vara, men inte när jag kör funktionen.
Frågan ser ut såhär "utskriven":
SELECT
a.`imageId`, a.`imageParent`, a.`imageName`, a.`imageWidth`, a.`imageHeight`, a.`imageSize`, a.`imageCreated`, a.`imageCaption`, a.`imagePublished`,
b.`tagId`, b.`tagX`, b.`tagY`, b.`tagBrand`
FROM images a
INNER JOIN tags b
ON a.imageId = b.tagParent
WHERE a.imageId IN(13,7,4,5,2,3)
ORDER BY a.imageId ASC, b.tagId ASC
Någon som har en hint vad det beror på? Har suttit och funderat och gjort om och funderat lite till men förstår inte vad som är på tok.
Tack!