这是我的查询运行代码:
$sqlm = getPageById();
if ($resultm = $mysqli->prepare($sqlm))
{
$mypageid = 216;
$resultm -> bind_param("i",$mypageid);
$resultm->execute();
$resultm->store_result();
$rowsm = $resultm->num_rows;
}
if($rowsm > 0)
{
$rowm = fetch($resultm);
$pagetitle = $mysqli->real_escape_string($rowm[0]["page_title"]);
$pageContent = $rowm[0]["page_content"];
$pageurlname = $mysqli->real_escape_string($rowm[0]["page_name_url"]);
}
这是我的疑问:
function getPageById()
{
$sqlStr = "select * from tbl_pages where page_id = ?";
return $sqlStr;
}
这就是我在邮件中发送的内容:
$mysqli->real_escape_string ($_POST["page_content"]);
这是我的echo
:
$pageContent = $rowm[0]["page_content"];
<?=$pageContent?>
我在回声中遇到问题我从数据库中得到的结果如下:
代替:stackoverflow。。我得到:stack/r/n//over/r/n/flow请帮忙吗?
mysqli_real_escape_string
用于清除要插入SQL查询的字符串(如果使用这种老式的方式而不是使用准备好的语句)。它不用于处理查询的结果。
如果您要将结果插入到网页中,您需要的函数是htmlentities
。例如
$pagecontent = htmlentities($rowm[0]["pagecontent"]);
在查询数据库时使用准备好的语句可以防止SQL注入。将结果放在网页上时使用htmlentities
可以防止跨站点脚本攻击。
看起来问题出在数据上,而不是php代码。你确定那些换行符不在数据库中吗?