我正在使用PHP 5.4和MySQL数据库。
此数据库代表媒体库。我正在处理的表有一列,“Title”,有明显的内容,然后是一系列布尔列,表示给定平台上该标题的可用性。所以一行看起来像
标题:“遏制你的热情:游戏”
PS4:0
Atari 2600:1
Dreamcast:0
等等。
我想写的PHP代码是伪代码
结果将是
的回声遏制你的热情:游戏(Atari 2600,WonderSwan,土星)
这是我无法解决的第四个陈述。它似乎需要函数mysqli_fetch_field,但我不确定语法,并且我在google搜索之后没有尝试。
我真的很感激有人可以提供任何建议或示例!
$database = mysqli_connect(SERVER,USERNAME,PASSWORD,'games');
$query = mysqli_query($database,"SELECT * FROM games` WHERE NAME LIKE '%ZELDA%'");
while ($row = mysqli_fetch_row($query)) {
echo $row[0]; // Echo title
for ($i=0;$i<sizeof($row);$i++) {
if ($row[$i] === '1') {
// ???????
}
}
}
答案 0 :(得分:2)
这是一些粗略的未经测试的代码,希望能让你前进。
while ($row = mysqli_fetch_assoc($query)) {
$columns = array(); // this will track the additional columns we need to display
foreach($row AS $column => $value) {
if($column == "title") {
echo $value; // this is the title, just spit it out
continue;
}
if($value == 1) {
// We have a column to display!
$columns[] = $column;
}
}
if(count($columns)) {
// We have one or more column names to display
echo " (" . implode(", ",$columns) . ")";
}
}
有些事要指出:
mysqli_fetch_assoc
将允许您访问列名和值,这在此处非常有用。答案 1 :(得分:0)
听起来你可以这样做:
// Simulates DB fetch
$titles = array(
array(
'TITLE'=>'Curb Your Enthusiasm: The Game',
'PS4'=>0,
'Atari 2600'=>1,
'Dreamcast'=>0
),
array(
'TITLE'=>'Curb Your Enthusiasm: The Book',
'PS4'=>1,
'Atari 2600'=>1,
'Dreamcast'=>0
)
);
foreach($titles as $title){
// get supported platforms
$supportedPlatforms = array();
foreach($title as $titleAttribute=>$titleValue){
if($titleAttribute != 'TITLE' && $titleValue == 1)
$supportedPlatforms[] = $titleAttribute;
}
echo $title['TITLE'] . ' (' . implode(', ', $supportedPlatforms) . ')' . "<br>";
}