2017-06-03 15 views
0

SQLインジェクションのリスクを減らすためにprepared statementを使用した後、ボタンをクリックするとページが空白になります。私は自分のコードでエラーを見つけることができませんでした。何が原因でページが空白になってしまったのですか?Prepared Statement後の空白ページ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$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エラー(およびその逆)を含むように を拡張されたファイルに報告されていないコンパイル時に評価されます。