常に mysql_real_escape_string
を使用します 引用符/スラッシュが含まれる可能性のある文字列を処理する場合。そうしないと、壊れた/悪意のあるクエリが発生します。 serialize()
の出力 引用符/スラッシュが付いている場合があるため、これを使用する必要があります。ただし、配列の各アイテムを事前にシリアル化する必要はありません。
$details['name'] = $_POST['name'];
$details['email'] = $_POST['email'];
$details['phone'] = $_POST['phone'];
$serializedDetails = mysql_real_escape_string(serialize($details));
例として、「hello」をシリアル化すると、次のようになります。s:5:"hello"
。
$data = 's:5:"hello"';
$query = 'INSERT INTO tbl (data) VALUES ("' . $data . '")';
// leads to a syntax error from mysql
// (plus it's a huge security hole)
mysql_query($query);