想知道是否有人可以指出我正确的方向。
目前我有一个包含多个列的表,其中包含A1,A2,A3等名称,我发现这样做不再适用于我想要使用的新数据库结构。
A1,A2,A3 ..现在将列在实际列中。
我已经包含了当前的代码,用于获取此信息,但我不知道如何遍历A1,A2 ..的列,并获取同一行的信息。
PHP代码:
<?php
$i=1;
$row = mysqli_fetch_assoc($result);
while ($i < 6) {
if($row["A".$i.""]=='FREE') {
print "<td><p>Available</p></td>";
}
else {
if($row["A$i"]==$auth_user) {
echo $i;
print"<td><div align=\"center\">".$row["A". $i. ""];
print "<br /><p>Cancel</p></span>";
print "</div></td>";
}
else {
print"<td><div align=\"center\">".$row["A". $i. ""];
print "</div></td>";
}
}
$i++;
}
}
?>
任何指针都会很棒。
当前表格结构:
Date | A1 | A2 ...
---------------------------
2017-05-23 | John | FREE ...
2017-05-24 | Jack | FREE ...
2017-05-25 | Jane | John ...
2017-05-26 | FREE | Jack ...
新表结构:
Date | Session | User ...
------------------------------------
2017-05-23 | A1 | John ...
2017-05-23 | A2 | Jane ...
2017-05-23 | A4 | John ...
2017-05-23 | A9 | Jack ...
答案 0 :(得分:0)
您似乎只尝试处理结果集中的一行数据。如果有多行,则需要为行写一个循环。
如果您使用mysqli_fetch_row()
,那么您将获得包含0索引键的结果数组,这将帮助您消除识别特定列名称的需要。至于如何识别Free
和$auth_user
,如果没有为您的问题提供一些示例输入,则无法确定。
我会提供一些假输入用于演示目的:
$auth_user=1;
$row=['something',1,2,'somethingelse','Free'];
// $row = mysqli_fetch_row($result);
方法:
foreach($row as $v){
if($v=='Free'){
echo '<td><p>Available</p></td>';
}else{
echo "<td><div align=\"center\">$v";
if($v==$auth_user){
echo '<br /><p>Cancel</p>'; // removed closing span tag
}
echo '</div></td>';
}
}
输出:
<td><div align="center">something</div></td>
<td><div align="center">1<br /><p>Cancel</p></div></td>
<td><div align="center">2</div></td>
<td><div align="center">somethingelse</div></td>
<td><p>Available</p></td>
请记住,我正在对输入数据做出假设。如果我的示例输入与您正在处理的数据类型不一样,请更新您的问题并留下评论,以便我知道调整我的答案。
答案 1 :(得分:-2)
在$结果集中,您可以调用fetch_field方法,如http://php.net/manual/en/mysqli-result.fetch-field.php
所示$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";
if ($result = $mysqli->query($query)) {
/* Get field information for all columns */
while ($finfo = $result->fetch_field()) {
printf("Name: %s\n", $finfo->name);
printf("Table: %s\n", $finfo->table);
printf("max. Len: %d\n", $finfo->max_length);
printf("Flags: %d\n", $finfo->flags);
printf("Type: %d\n\n", $finfo->type);
}
$result->close();
}
/* close connection */
$mysqli->close();
使用方法meta_data http://php.net/manual/en/mysqli-stmt.result-metadata.php
也可以使用语句