-3

这是我的查询运行代码:

$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 有什么帮助吗?

4

2 回答 2

1

mysqli_real_escape_string用于清理您要插入到 SQL 查询中的字符串(如果您使用这种老式方式而不是使用准备好的语句)。它不用于处理查询结果

如果您要将结果插入网页,您需要的功能是htmlentities. 例如

$pagecontent = htmlentities($rowm[0]["pagecontent"]);

在查询数据库时使用准备好的语句可以防止 SQL 注入。将htmlentities结果放在网页上时使用可防止跨站点脚本攻击。

于 2012-09-06T07:12:13.493 回答
0

看起来好像数据是问题,而不是您的 php 代码。您确定这些换行符不在数据库中吗?

于 2012-09-06T07:04:41.860 回答