PHP MYSQLi real_escape_string

时间:2012-09-06 06:56:35

标签: php mysql sql mysqli

这是我的查询运行代码:

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

2 个答案:

答案 0 :(得分:1)

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

如果您要将结果插入网页,则所需的功能为htmlentities。 E.g。

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

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

答案 1 :(得分:0)

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