-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_stringSQLクエリに補間する文字列をサニタイズするために使用されます(準備されたステートメントを使用する代わりに、この昔ながらの方法を使用する場合)。クエリの結果の処理には使用されません。

結果を Web ページに挿入する場合、必要な機能はhtmlentities. 例えば

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

データベースにクエリを実行するときに準備済みステートメントを使用すると、SQL インジェクションを防ぐことができます。htmlentities結果を Web ページに表示するときに使用すると、クロスサイト スクリプティング攻撃を防ぐことができます。

于 2012-09-06T07:12:13.493 に答える
0

PHPコードではなく、データに問題があるようです。それらの改行がデータベースにないのは確かですか?

于 2012-09-06T07:04:41.860 に答える