0
私はHTML、PHP、MySQLを使用して基本的なウェブサイトを持っています。PHP - HTMLの入力文字列がエスケープシーケンス文字列としてMySQLに格納されています
HTML入力:
C# - Developer's Guide "LIMITED EDITION"
はPHPで
次のようになります。MySQLでは
C# - Developer\'s Guide \"LIMITED EDITION\"
:
私が使用してPHPでC# - Developer\'s Guide \"LIMITED EDITION\"
:
if(empty($_POST['book_title'])) {
$errors['book_title'] = TRUE;
} else {
$book_title = mysqli_real_escape_string($link, trim($_POST['book_title']));
}
$query1 = "INSERT INTO book(title) VALUES(?)";
if(!$errors && mysqli_stmt_prepare($stmt,$query1))
{
mysqli_stmt_bind_param($stmt, "s", $book_title) or die("Bind param failed");
if(!mysqli_stmt_execute($stmt)) {
$errors['table_book'] = TRUE;
}
} else {
$errors['table_book'] = TRUE;
}
EDIT: magic_quotesがオフになっています。私はPHP 7.0.3を使用しています。
私のHTML入力をそのままPHPやMySQLにもどすには?
私が助けることができれば、magic_quotes(ブログのどこかで聞いたこと)とは何ですか?
私に他の情報が必要な場合はお問い合わせください。助けて。上記のコメントや他のSOクエリの「フィル」で示唆したように
$エラー['book_title'] = TRUE; '本当はそうではありません。 – user5173426
@ user5173426 [$ errors = array();として宣言されています。 ]私はAJAXレスポンスのエラーリストを設定しています。それは私の実際の問題ではありません。一重引用符と二重引用符を使用して文字列を格納すると(HTML入力経由で)問題が発生します。あなたが私を助けてくれることを望みます。 –
最初に私はPDOのprepared statements(http://stackoverflow.com/documentation/php/275/using-a-database)を使用することをお勧めします - あなたのためにエスケープする値を処理します。次に、このデータを送信するために使用している実際のフォームであるHTML入力フィールドを確認できますか?それが単なる標準入力でPHPの値を取得した場合、文字列(引用符はエスケープされていない)でなければならないので、どのように/どこからエスケープされるのかははっきりしません。 – WOUNDEDStevenJones