PHP准备好的声明 - 打印结果

时间:2016-12-07 20:05:07

标签: php sql prepared-statement

我正在尝试显示应该只有一个结果的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循环的情况下打印它们。有什么见解吗?

2 个答案:

答案 0 :(得分:2)

正如Jay Blanchard在你的问题的评论部分所说的那样......

您应该使用<br />,因为它告诉浏览器将其作为新行读取。因为\n\r只是在文件输出中写了一个新行,并且默认情况下,浏览器不会将文件中的换行符读作新行,除非有<br />标记告诉浏览器将其读作新行。

因此:

printf("\n");

应更改为:

printf("<br />");

另一种方法是,如果您希望浏览器将新行字符作为新行读取,则可以将内容包装在<pre></pre>标记中。

有关预包装的详情,请参阅:

http://www.w3schools.com/TAgs/tag_pre.asp

How do I wrap text in a pre tag?

答案 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
}
?>