ID でテーブル内のいくつかの画像を選択する必要があります (重複エントリが許可されています)。
私のメインコード:
...
$selectedImages = $this->selectImages($selectedNews['ID'][$i]);
//Check values
echo 'Count of Array: '.sizeof($selectedImages)."\n";
if (sizeof($selectedImages) == 0) {
$this->html[] = '-';
} else {
for ($j = 0; $j < sizeof($selectedImages); $j++) {
$this->html[] = '<a class="fancybox single_image" href="/'.$selectedImages['Path'][$j].$selectedImages['Name'][$j].'"><img src="thumbnail/thumb.php?src=../../'.$selectedImages['Path'][$j].$selectedImages['Name'][$j].'&h=50&w=50" alt="'.$selectedImages['Name'][$j].'" /></a>';
}
}
...
これが私の方法です:
private function selectImages($id) {
$selectedImages = array();
$sql = "SELECT
Name,
Path
FROM
News_images
WHERE
Pos = '".mysqli_real_escape_string($this->db, $id)."'
";
$stmt = $this->db->prepare($sql);
if (!$result = $this->db->query($sql)) {
echo 'Datenbankfehler\n';
echo $this->db->error;
}
$i = 0;
while ($row = $result->fetch_assoc()) {
$selectedImages['Path'][$i] = $row['Path'];
$selectedImages['Name'][$i] = $row['Name'];
$i++;
}
echo 'Selected: '.$i.' images ,';
return $selectedImages;
}
次の出力が得られます: 選択された 1 つの画像、配列の数: 2 選択された 0 の画像、配列の数: 0 選択された 4 つの画像、配列の数: 2
選択された画像の実際の量は正しいものです。しかし、配列の数は実際の選択の数と一致しません。
ここで何が問題なのですか?