2017-06-03 29 views
0

在使用預準備語句降低SQL注入風險之後,按鈕單擊會將頁面留爲空白。我在代碼中找不到任何錯誤。什麼導致頁面變爲空白,我如何防止它發生?準備好聲明後的空白頁面PHP

if(isset($_POST['desc_btn'])) { 
    $code = mysqli_real_escape_string($con, strip_tags($_POST['code_desc'])); 
    $desc = mysqli_real_escape_string($con, strip_tags($_POST['description'])); 

    $code_select = $con->prepare("SELECT * FROM data WHERE code=?"); 
    $code_select->bind_param("s", $code); 
    $code_select->execute(); 
    $data = $code_select->get_result(); 
    $data_user_id = $data['user_id']; 

    $data_id = $data['id']; 

    if($user_id == $data_user_id ) { 
     $code_select->close(); 
     $update = $con->prepare("UPDATE data SET description=? WHERE id=?"); 
     $update->bind_param('s', $desc, $data_id; 
     $update->execute(); 
     $update->close(); 
    } 
} 
error_reporting(E_ALL); 

感謝您的幫助。我願意接受任何意見。

+0

首先,你不應該使用mysqli_real_escape_string,PHP PDO做所有轉義,它需要它本身 –

+3

頁面應該是空白的。你在這裏沒有迴應任何東西。 – Akintunde007

回答

0

您在$update->bind_param()行上有語法錯誤。

type char $data_id和右括號丟失。

更改爲以下代碼

$update->bind_param('si', $desc, $data_id); 
+0

即使我解決了這個問題,該按鈕仍然會導致一個空白頁面。謝謝你的幫助! – apaul

0

的的error_reporting()函數在運行時 設置error_reporting指令。 PHP有很多級別的錯誤,使用這個函數將爲您的腳本的持續時間(運行時)設置 級別。如果未設置可選級別 ,則error_reporting()將僅返回當前的錯誤 報告級別。

你應該在文件的開頭調用這個函數。

大多數E_STRICT錯誤是在因此這樣 錯誤不是其中的error_reporting被增強 包括E_STRICT錯誤(反之亦然)的文件中報道的編譯時進行評價。