首页 > 解决方案 > php echo 在输出前添加 /r/n

问题描述

可能这是我的另一个愚蠢的问题,但是......
我有这个非常简单的 PHP 文件,它从 MySQL 数据库返回表的“日期时间”字段中的第一个日期:

<?php
$query = "SELECT MIN(Date) FROM Table";
$result = mysqli_query($db,$query); //$db defined elsewhere
if ($result) {
	$row = mysqli_fetch_row($result);
	echo $row[0];
}
?>

一切正常,日期返回,但'\r\n'开头多了一个;即:'\r\n2019-01-21'

我不明白这是从哪里来的,它会在程序的其余部分产生错误。

请注意,我目前有几个其他 PHP 文件没有显示此问题。

目前我暂时用'firstdate.slice(2)'.

怎么了?

编辑
我检查了 MySql/PHP 端,没有任何外部字符(感谢 Alister 的 var_dump 建议)。我还删除了结束 ?> 标记,结果相同。
问题似乎来自 Ajax 调用,如下所示:

$.ajax({
    url: "php/caricaPrimaData.php", //the above snippet
    type: "GET",
    async: false, //I know, should be True, but it is ok for me
    success: function(response){ //response = '/r/n2015-11-15'
    	gFirstDate = response.trim();
  	}
});

这里的“响应”变量(用 Mozilla 调试器检查)显示换行符,然后被修剪删除。
解决方案是可以接受的,但好奇心仍然存在。

标签: phpmysql

解决方案


如果屏幕的输出有额外的换行符,而不是变量(检查var_dump($row[0]);),那么如果您在运行该代码之前包含其他文件,并且其他文件也有 close-PHP?>标记,您可能有一个空行隐藏在标签之后,文件中的某处。

这就是为什么在不需要时不再使用任何关闭 php 标记是最佳实践的原因——这只会出现在 HTML 文件的中间,其中包含一些 PHP。

没有结束标签,你不能在它后面放任何东西,即使是意外。


推荐阅读