2012-09-06 77 views
-3

這是我的查詢運行代碼: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?> 

我碰到一個問題回聲 我從數據庫中獲取這樣的結果:

在代替:計算器.. 我得到:堆棧/ R/N //在/ R/N /流量 請幫忙嗎?

+7

問題出在...? –

+3

你忘了在你的問題中提問。 –

+1

@michael:你有什麼問題?你會得到什麼錯誤信息? –

回答

0

它看起來好像數據是問題,而不是你的php代碼。你確定這些換行符不在數據庫中嗎?

+0

是的,他們在數據庫中:S ...因爲這個我把我的$ _POST代碼:S ...他們在數據庫中存儲! – michael

1

mysqli_real_escape_string用於清理要插入到SQL查詢中的字符串(如果您使用這種傳統方式而不是使用預處理語句)。它不用於處理查詢的結果

如果你打算將結果插入網頁,你想要的功能是htmlentities。例如。

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

查詢數據庫時使用預準備語句可防止SQL注入。將結果放入網頁時使用htmlentities可防止跨站點腳本攻擊。

+0

你的意思是說,當我插入數據庫我不需要real_escape_string? ... 這是我發送$ _POST:'$ mysqli-> real_escape_string($ _POST [「page_content」]);',,我應該在後期使用什麼代碼和什麼在回聲結果到我的網頁? – michael

+0

查看編輯答案。 – Barmar

+0

你的意思是說我不需要使用 '$ mysqli-> real_escape_string'?只是: '$ string = $ _POST [「fieldname」];'? 並在處理查詢的rsults只是回聲: '$ name = $ row [「name」];' 'echo $ name;'? – michael

相關問題