我正在尝试显示应该只有一个结果的SQL查询的信息。我想在不同的地方显示不同的列(具有不同的格式)。
这是我目前的代码:
$query = "SELECT artist_ID, name, description, years_active FROM artist WHERE name LIKE ?;";
if (!($stmt = $conn->prepare($query))) {
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}
if (!$stmt->bind_param("s", $artist)) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
$stmt->bind_result($artist_ID, $name, $description, $years_active);
while ($stmt->fetch()) {
printf("%s", $name);
printf("\n");
printf("%s", $description);
}
即使我已经包含换行符,它只是在一行上打印这两个结果。而且我无法弄清楚如何在没有while循环的情况下打印它们。有什么见解吗?
答案 0 :(得分:2)
正如Jay Blanchard在你的问题的评论部分所说的那样......
您应该使用<br />
,因为它告诉浏览器将其作为新行读取。因为\n
和\r
只是在文件输出中写了一个新行,并且默认情况下,浏览器不会将文件中的换行符读作新行,除非有<br />
标记告诉浏览器将其读作新行。
因此:
printf("\n");
应更改为:
printf("<br />");
另一种方法是,如果您希望浏览器将新行字符作为新行读取,则可以将内容包装在<pre></pre>
标记中。
有关预包装的详情,请参阅:
答案 1 :(得分:0)
我希望你理解这段代码。 脚步: 删除while循环 生成关联数组并将其保存到变量($ row)中 编写一个foreach循环,以便打印数组中每个注册表的名称和描述
<?php
if($row=$stmt->fetch_assoc()){
foreach($row as $value){
?>
<!--HTML Code-->
<!--This is between the foreach and it's end (})-->
<!--So anything between here will be interpreted by your browser for each element in $row-->
<tr>
<td><p><?php echo $row['name']?></p></td>
<td><p><?php echo $row['description'] ?></p></td>
</tr>
<?php
} //end of foreach
}
?>