2016-07-31 10 views
0

このコードブロックでは、mysqli_real_escape_string()をどこに置くのですか?PHPとMySQLフォーム提出

ブロック全体を書く良い方法があるなら、私は聞きたいと思っています。

<?php 
$title = ($_POST["title"]); 
$date = ($_POST["date"]); 
$content = ($_POST["content"]); 

$query = "INSERT INTO months ("; 
$query .= " title, date, content "; 
$query .= ") VALUES ("; 
$query .= " '{$title}', '{$date}', '{$content}' "; 
$query .= ")"; 
mysqli_query($connection, $query); ?> 

答えて

1

それは、プリペアドステートメントを使用するのがベストでしょう。

$stmt = mysqli_prepare($connection, "INSERT INTO months (title, date, content) 
           VALUES(?, ?, ?)"); 

mysqli_stmt_bind_param($stmt, "sss", $title, $date, $content); 
$title = $_POST["title"]; 
$date = $_POST["date"]; 
$content = $_POST["content"]; 
mysqli_stmt_execute($stmt); 

エスケープ関数と文字列連結を使用する場合でも、SQLインジェクションが可能な場合があります。 Prepared Statementsは動作が異なるため、SQLインジェクションに対して安全です。 https://stackoverflow.com/a/60496/3595565

+0

フィリップ – benjiman

0

これを試してみてください:

$title = mysqli_real_escape_string($_POST["title"]); 
$date = mysqli_real_escape_string($_POST["date"]); 
$content = mysqli_real_escape_string($_POST["content"]); 
関連する問題