あなたの投稿の答えはDRYとfetch_object()ない名前で、各列を指名することができ強制されます。その名前で列にアクセスすると、可変長の変数命名法(ほとんどの人が避けようとする)を使用して、長時間コードブロックまたはより短いコードブロックを作成する必要があります。
array_filter()をfetch_row()に設定して単純なDRYブロックを作成し、null以外の列の値からイメージタグを生成しました。
$up_id
がユーザー入力の場合は、照会で使用する前に何らかの形でサニタイズを行ってください。
$up_id=2;
if(!$db=new mysqli("host","user","pass","db")){
echo "Connection Error: ",$db->connect_error; // do not echo when live
}elseif(!$result=$db->query("SELECT img_1,img_2,img_3,img_4,img_5,img_6,img_7,img_8,img_9,img_10 FROM `tours` WHERE `up_id`=$up_id")){
echo "Query Syntax Error: ",$db->error; // do not echo when live
}elseif(!$result->num_rows){
echo "Query Logic Error: No Rows For $up_id"; // write your preferred message
}else{
foreach(array_filter($result->fetch_row()) as $column){
echo "<div>";
echo "<img data-u=\"image\" src=\"img/$column\" />";
echo "<img data-u=\"thumb\" src=\"img/$column\" />";
echo "</div>";
}
}
あなたはこのテーブルの上にそのコードを実行した場合:私は読みやすいよう、各ペアの後に改行を追加しました*
<div><img data-u="image" src="img/imgK.jpg" /><img data-u="thumb" src="img/imgK.jpg" /></div>
<div><img data-u="image" src="img/imgL.jpg" /><img data-u="thumb" src="img/imgL.jpg" /></div>
<div><img data-u="image" src="img/imgN.jpg" /><img data-u="thumb" src="img/imgN.jpg" /></div>
<div><img data-u="image" src="img/imgO.jpg" /><img data-u="thumb" src="img/imgO.jpg" /></div>
<div><img data-u="image" src="img/imgQ.jpg" /><img data-u="thumb" src="img/imgQ.jpg" /></div>
<div><img data-u="image" src="img/imgS.jpg" /><img data-u="thumb" src="img/imgS.jpg" /></div>
:
CREATE TABLE `tours` (
`up_id` int(10) NOT NULL,
`img_1` varchar(100) DEFAULT NULL,
`img_2` varchar(100) DEFAULT NULL,
`img_3` varchar(100) DEFAULT NULL,
`img_4` varchar(100) DEFAULT NULL,
`img_5` varchar(100) DEFAULT NULL,
`img_6` varchar(100) DEFAULT NULL,
`img_7` varchar(100) DEFAULT NULL,
`img_8` varchar(100) DEFAULT NULL,
`img_9` varchar(100) DEFAULT NULL,
`img_10` varchar(100) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `tours` (`up_id`, `img_1`, `img_2`, `img_3`, `img_4`, `img_5`, `img_6`, `img_7`, `img_8`, `img_9`, `img_10`) VALUES
(1, 'imgA.jpg', 'imgB.jpg', 'imgC.jpg', 'imgD.jpg', 'imgE.jpg', 'imgF.jpg', 'imgG.jpg', 'imgH.jpg', 'imgI.jpg', 'imgJ.jpg'),
(2, 'imgK.jpg', 'imgL.jpg', NULL, 'imgN.jpg', 'imgO.jpg', NULL, 'imgQ.jpg', NULL, 'imgS.jpg', NULL);
ALTER TABLE `tours`
ADD PRIMARY KEY (`up_id`);
ALTER TABLE `tours`
MODIFY `up_id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
をお使いの出力ソース・コードは次のようになります。