重複の可能性:
PHP で SQL インジェクションを防止する最善の方法
クエリを作成するときに文字列をエスケープする最良の方法は何ですか? mysql_real_escape_string() は良いようですが、適切に使用する方法が正確にはわかりません。
このコードは適切に機能しますか?
<?php
/* Let's say that the user types "'#""#''"\{(})#&/\€ in a textfield */
$newStr = mysql_real_escape_string($str);
$query = "INSERT INTO table username VALUES ($str)";
mysql_query($query);
?>
編集:
今、私はこのコードを持っています:
$email = $_POST['email'];
$displayName = $_POST['displayName'];
$pass = $_POST['pass1'];
$email = mysqli_real_escape_string($link, $email);
$displayName = mysqli_real_escape_string($link, $displayName);
$pass = mysqli_real_escape_string($link, $pass);
$insert = "INSERT INTO profiles (email, displayName, password)
VALUES ('$email', '$displayName', md5('$pass'))";
mysqli_query($link, $insert)
or die(mysqli_error($link));
しかし、次のエラーが表示されます。SQL 構文にエラーがあります。1 行目の ' !"#!#^!"#!" #!"#^''''''付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
ユーザーが入力した場合: '**!"#!#^!"#!"*#!"#^''''