PHP MYSQLi real_escape_string


PHP MYSQLi real_escape_string

这是我的查询运行代码:

$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代码。你确定那些换行符不在数据库中吗?